From e22aa6ff48e6c085d29bc062eb7677b64c769640 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 12 Mar 2014 17:01:37 +0100 Subject: [PATCH 01/12] moved Elasticsearch.Test.Unit inside tests folder --- src/Elasticsearch.Net/Connection/HttpConnection.cs | 1 + src/Elasticsearch.sln | 2 +- .../Connection/ConcurrencyTests.cs | 0 .../Connection/RetryTests.cs | 0 .../Connection/SkipDeadNodesTests.cs | 0 .../Connection/SniffingConnectionPoolTests.cs | 0 .../Connection/StaticConnectionPoolRetryTests.cs | 0 .../Elasticsearch.Net.Tests.Unit.csproj | 14 +++++++------- .../Properties/AssemblyInfo.cs | 0 .../Stubs/NoopConnection.cs | 0 .../Elasticsearch.Net.Tests.Unit/app.config | 0 .../Elasticsearch.Net.Tests.Unit/packages.config | 0 .../Nest.Tests.Integration.csproj | 2 +- .../{Reproduce437.cs => Reproduce437Tests.cs} | 0 14 files changed, 10 insertions(+), 9 deletions(-) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj (86%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Properties/AssemblyInfo.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/app.config (100%) rename src/{ => Tests}/Elasticsearch.Net.Tests.Unit/packages.config (100%) rename src/Tests/Nest.Tests.Integration/Reproduce/{Reproduce437.cs => Reproduce437Tests.cs} (100%) diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index d1cd0b9bc68..2f048c0bb70 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -25,6 +25,7 @@ static HttpConnection() ServicePointManager.Expect100Continue = false; ServicePointManager.DefaultConnectionLimit = 10000; } + public HttpConnection(IConnectionConfigurationValues settings) { if (settings == null) diff --git a/src/Elasticsearch.sln b/src/Elasticsearch.sln index 5de662854b1..6cc1d9f409f 100644 --- a/src/Elasticsearch.sln +++ b/src/Elasticsearch.sln @@ -55,7 +55,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.ServiceSt EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.Connection.HttpClient", "Connections\Elasticsearch.Net.Connection.HttpClient\Elasticsearch.Net.Connection.HttpClient.csproj", "{A69322FD-B874-44EF-ABE0-63F4A7B5593E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.Tests.Unit", "Elasticsearch.Net.Tests.Unit\Elasticsearch.Net.Tests.Unit.csproj", "{C54FFD67-C452-4DC4-A47A-663ECA98A38F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.Tests.Unit", "Tests\Elasticsearch.Net.Tests.Unit\Elasticsearch.Net.Tests.Unit.csproj", "{C54FFD67-C452-4DC4-A47A-663ECA98A38F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj b/src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj similarity index 86% rename from src/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj rename to src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj index 738ec2a3180..d108c7356fe 100644 --- a/src/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj @@ -31,25 +31,25 @@ - ..\..\dep\Autofac.3.2.0\lib\net40\Autofac.dll + ..\..\..\dep\Autofac.3.2.0\lib\net40\Autofac.dll False - ..\..\dep\Autofac.Extras.FakeItEasy.3.0.1\lib\net40\Autofac.Extras.FakeItEasy.dll + ..\..\..\dep\Autofac.Extras.FakeItEasy.3.0.1\lib\net40\Autofac.Extras.FakeItEasy.dll False - ..\..\dep\FakeItEasy.1.18.0\lib\net40\FakeItEasy.dll + ..\..\..\dep\FakeItEasy.1.18.0\lib\net40\FakeItEasy.dll - ..\..\dep\FluentAssertions.2.0.0.1\lib\net45\FluentAssertions.dll + ..\..\..\dep\FluentAssertions.2.0.0.1\lib\net45\FluentAssertions.dll False - ..\..\dep\NUnit.2.6.1\lib\nunit.framework.dll + ..\..\..\dep\NUnit.2.6.1\lib\nunit.framework.dll - ..\..\dep\Purify - Preview\PUrify.dll + ..\..\..\dep\Purify - Preview\PUrify.dll @@ -73,7 +73,7 @@ - + {e97ccf40-0ba6-43fe-9f2d-58d454134088} Elasticsearch.Net diff --git a/src/Elasticsearch.Net.Tests.Unit/Properties/AssemblyInfo.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Properties/AssemblyInfo.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Properties/AssemblyInfo.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Properties/AssemblyInfo.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs rename to src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs diff --git a/src/Elasticsearch.Net.Tests.Unit/app.config b/src/Tests/Elasticsearch.Net.Tests.Unit/app.config similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/app.config rename to src/Tests/Elasticsearch.Net.Tests.Unit/app.config diff --git a/src/Elasticsearch.Net.Tests.Unit/packages.config b/src/Tests/Elasticsearch.Net.Tests.Unit/packages.config similarity index 100% rename from src/Elasticsearch.Net.Tests.Unit/packages.config rename to src/Tests/Elasticsearch.Net.Tests.Unit/packages.config diff --git a/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj b/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj index 13264e2985b..b8f15328ad3 100644 --- a/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj +++ b/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj @@ -134,7 +134,7 @@ - + diff --git a/src/Tests/Nest.Tests.Integration/Reproduce/Reproduce437.cs b/src/Tests/Nest.Tests.Integration/Reproduce/Reproduce437Tests.cs similarity index 100% rename from src/Tests/Nest.Tests.Integration/Reproduce/Reproduce437.cs rename to src/Tests/Nest.Tests.Integration/Reproduce/Reproduce437Tests.cs From c97f6cb17c95bf09131cc035ba6b7f04eb83aed9 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Mon, 17 Mar 2014 11:52:39 +0100 Subject: [PATCH 02/12] split elasticsearch response in to two --- .../ThriftConnection.cs | 2 +- .../Domain/ElasticsearchResponse.cs | 161 ++++++++++-------- .../YamlTestsBase.cs | 4 +- 3 files changed, 97 insertions(+), 70 deletions(-) diff --git a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs index 22b30f0e088..bf2b1535535 100644 --- a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs +++ b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs @@ -216,7 +216,7 @@ public IList Sniff(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); var r = this.Execute(restRequest); - using (var memoryStream = new MemoryStream(r.ResultBytes)) + using (var memoryStream = new MemoryStream(r.Response)) { return Sniffer.FromStream(memoryStream, this._connectionSettings.Serializer); } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index 49bedf8e282..86cf585c31c 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -14,54 +14,24 @@ namespace Elasticsearch.Net { - public class ElasticsearchResponse + public class ElasticsearchResponse : ElasticsearchResponse { - private static readonly string _printFormat; - private static readonly string _errorFormat; - - public bool Success { get; protected internal set; } - public ConnectionError Error { get; protected internal set; } - public string RequestMethod { get; protected internal set; } - public string RequestUrl { get; protected internal set; } - public IConnectionConfigurationValues Settings { get; protected internal set; } - private string _result; + public string Result { - get { return _result ?? (_result = this.ResultBytes.Utf8String()); } + get { return _result ?? (_result = this.Response.Utf8String()); } } - - public byte[] ResultBytes { get; protected internal set; } - public byte[] Request { get; protected internal set; } - - public int? HttpStatusCode { get; protected internal set; } - - public IElasticsearchSerializer Serializer { get; protected internal set; } - + private static readonly byte _startAccolade = (byte)'{'; private ElasticsearchDynamic _response; - - /// - /// If the response is succesful or has a known error (400-500 range) - /// The client should not retry this call - /// - internal bool SuccessOrKnownError + public ElasticsearchDynamic DynamicResult { get { - return this.Success || - (this.HttpStatusCode.HasValue - && this.HttpStatusCode.Value != 503 && (this.HttpStatusCode.Value >= 400 && this.HttpStatusCode.Value < 599)); - } - } - - public ElasticsearchDynamic Response - { - get - { - if (ResultBytes == null || ResultBytes.Length == 0) + if (Response == null || Response.Length == 0) return null; - if (ResultBytes[0] != _startAccolade) + if (Response[0] != _startAccolade) return null; if (_response == null) @@ -69,39 +39,18 @@ public ElasticsearchDynamic Response return this._response; } } - - - - protected ElasticsearchResponse(IConnectionConfigurationValues settings) + protected ElasticsearchResponse(IConnectionConfigurationValues settings) : base(settings) { this.Settings = settings; this.Serializer = settings.Serializer; } - public static ElasticsearchResponse CreateError(IConnectionConfigurationValues settings, Exception e, string method, string path, byte[] request) - { - var cs = new ElasticsearchResponse(settings, e); - cs.Request = request; - cs.RequestUrl = path; - cs.RequestMethod = method; - return cs; - } - public static ElasticsearchResponse Create(IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request, byte[] response) - { - var cs = new ElasticsearchResponse(settings, statusCode, response); - cs.Request = request; - cs.RequestUrl = path; - cs.RequestMethod = method; - return cs; - } - - private ElasticsearchResponse(IConnectionConfigurationValues settings, Exception e) : this(settings) { this.Success = false; this.Error = new ConnectionError(e); if (this.Error.ResponseReadFromWebException != null) - this.ResultBytes = this.Error.ResponseReadFromWebException; + this.Response = this.Error.ResponseReadFromWebException; if (this.Error.HttpStatusCode != null) this.HttpStatusCode = (int) this.Error.HttpStatusCode; } @@ -113,24 +62,34 @@ private ElasticsearchResponse(IConnectionConfigurationValues settings, int statu var exception = new ConnectionException(statusCode); this.Error = new ConnectionError(exception); } - this.ResultBytes = response; + this.Response = response; this.HttpStatusCode = statusCode; } - - static ElasticsearchResponse() + public static ElasticsearchResponse CreateError(IConnectionConfigurationValues settings, Exception e, string method, string path, byte[] request) { - _printFormat = "StatusCode: {1}, {0}\tMethod: {2}, {0}\tUrl: {3}, {0}\tRequest: {4}, {0}\tResponse: {5}"; - _errorFormat = "{0}\tExceptionMessage: {1}{0}\t StackTrace: {2}"; + var cs = new ElasticsearchResponse(settings, e); + cs.Request = request; + cs.RequestUrl = path; + cs.RequestMethod = method; + return cs; } - + public static ElasticsearchResponse Create(IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request, byte[] response) + { + var cs = new ElasticsearchResponse(settings, statusCode, response); + cs.Request = request; + cs.RequestUrl = path; + cs.RequestMethod = method; + return cs; + } + /// /// Returns a response of type R based on the connection status by trying parsing status.Result into R /// /// public virtual T Deserialize(bool allow404 = false) where T : class { - return this.Serializer.Deserialize(this.ResultBytes); + return this.Serializer.Deserialize(this.Response); } public override string ToString() @@ -151,6 +110,74 @@ public override string ToString() } return print; } + } + + public class ElasticsearchResponse + { + protected static readonly string _printFormat; + protected static readonly string _errorFormat; + + public bool Success { get; protected internal set; } + public ConnectionError Error { get; protected internal set; } + + public string RequestMethod { get; protected internal set; } + public string RequestUrl { get; protected internal set; } + public IConnectionConfigurationValues Settings { get; protected internal set; } + + public T Response { get; protected internal set; } + + public byte[] Request { get; protected internal set; } + + public int? HttpStatusCode { get; protected internal set; } + + public IElasticsearchSerializer Serializer { get; protected internal set; } + + /// + /// If the response is succesful or has a known error (400-500 range) + /// The client should not retry this call + /// + internal bool SuccessOrKnownError + { + get + { + return this.Success || + (this.HttpStatusCode.HasValue + && this.HttpStatusCode.Value != 503 && (this.HttpStatusCode.Value >= 400 && this.HttpStatusCode.Value < 599)); + } + } + + + protected ElasticsearchResponse(IConnectionConfigurationValues settings) + { + this.Settings = settings; + this.Serializer = settings.Serializer; + } + + + static ElasticsearchResponse() + { + _printFormat = "StatusCode: {1}, {0}\tMethod: {2}, {0}\tUrl: {3}, {0}\tRequest: {4}, {0}\tResponse: {5}"; + _errorFormat = "{0}\tExceptionMessage: {1}{0}\t StackTrace: {2}"; + } + + public override string ToString() + { + var r = this; + var e = r.Error; + var print = _printFormat.F( + Environment.NewLine, + r.HttpStatusCode.HasValue ? r.HttpStatusCode.Value.ToString(CultureInfo.InvariantCulture) : "-1", + r.RequestMethod, + r.RequestUrl, + r.Request, + "RESPONSE STREAM ALREADY READ BY SERIALIZER" + ); + if (!this.Success) + { + print += _errorFormat.F(Environment.NewLine, e.ExceptionMessage, e.OriginalException.StackTrace); + } + return print; + } } } diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs index ccbb7456a81..3d2c581ff35 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs @@ -34,7 +34,7 @@ static YamlTestsBase() var settings = new ConnectionConfiguration(uri).UsePrettyResponses(); _client = new ElasticsearchClient(settings); var infoResponse = _client.Info(); - dynamic info = infoResponse.Response; + dynamic info = infoResponse.DynamicResult; _versionNumber = new Version(info.version.number); } @@ -79,7 +79,7 @@ protected void Do(Func action, string shouldCatch = null) Assert.IsTrue(Regex.IsMatch(this._status.Result, re), "response does not match regex: " + shouldCatch); } - this._response = this._status.Response; + this._response = this._status.DynamicResult; } protected void Skip(string version, string reason) From 0e73c1a866f1f2decb073b87f52b9b9b56d082d9 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Tue, 18 Mar 2014 14:05:58 +0100 Subject: [PATCH 03/12] Low level client now has Dynamic() and StronglyTped() methods --- .../Domain/ApiEndpoint.cs | 74 +- .../Domain/CsharpMethod.cs | 2 + .../ElasticsearchClient.Generated.cshtml | 23 +- .../IElasticsearchClient.Generated.cshtml | 21 +- .../Views/RawDispatch.Generated.cshtml | 14 +- .../ThriftConnection.cs | 2 +- .../Connection/ConnectionConfiguration.cs | 8 +- .../Connection/ElasticsearchResponseTracer.cs | 6 +- .../Connection/HttpConnection.cs | 140 +- .../Connection/IConnection.cs | 25 +- .../Connection/IConnectionConfiguration.cs | 2 +- .../IConnectionConfigurationValues.cs | 2 +- .../Connection/ITransport.cs | 18 +- .../Connection/InMemoryConnection.cs | 20 +- src/Elasticsearch.Net/Connection/Transport.cs | 64 +- ...csearchDynamic.cs => DynamicDictionary.cs} | 81 +- .../Domain/ElasticsearchResponse.cs | 70 +- .../Elasticsearch.Net.csproj | 2 +- .../ElasticsearchClient.Generated.cs | 26748 +++++++++++++--- src/Elasticsearch.Net/ElasticsearchClient.cs | 8 +- .../IElasticsearchClient.Generated.cs | 14994 ++++++++- src/Elasticsearch.Net/Providers/Sniffer.cs | 10 +- .../ElasticsearchDefaultSerializer.cs | 85 + .../Serialization/IElasticsearchSerializer.cs | 5 +- src/Elasticsearch.sln | 9 - src/Nest/Domain/Responses/BaseResponse.cs | 16 +- .../Domain/Responses/GetMappingResponse.cs | 2 +- src/Nest/Domain/State/ClusterState.cs | 2 +- src/Nest/Domain/Stats/NodeInfo.cs | 2 +- src/Nest/ElasticClient-Aliases.cs | 8 +- src/Nest/ElasticClient-Analyze.cs | 4 +- src/Nest/ElasticClient-Bulk.cs | 4 +- src/Nest/ElasticClient-ClearCache.cs | 4 +- src/Nest/ElasticClient-Count.cs | 4 +- src/Nest/ElasticClient-CreateIndex.cs | 4 +- src/Nest/ElasticClient-Delete.cs | 4 +- src/Nest/ElasticClient-DeleteByQuery.cs | 4 +- src/Nest/ElasticClient-Flush.cs | 4 +- src/Nest/ElasticClient-Get.cs | 4 +- src/Nest/ElasticClient-Health.cs | 4 +- src/Nest/ElasticClient-Index.cs | 4 +- src/Nest/ElasticClient-IndexExists.cs | 8 +- src/Nest/ElasticClient-MappingDelete.cs | 4 +- src/Nest/ElasticClient-MappingGet.cs | 22 +- src/Nest/ElasticClient-MappingIndex.cs | 8 +- src/Nest/ElasticClient-MappingType.cs | 4 +- src/Nest/ElasticClient-MoreLikeThis.cs | 4 +- src/Nest/ElasticClient-MultiGet.cs | 14 +- src/Nest/ElasticClient-MultiSearch.cs | 18 +- src/Nest/ElasticClient-Nodes.cs | 8 +- src/Nest/ElasticClient-OpenClose.cs | 8 +- src/Nest/ElasticClient-Optimize.cs | 4 +- src/Nest/ElasticClient-Percolate.cs | 14 +- src/Nest/ElasticClient-Refresh.cs | 4 +- src/Nest/ElasticClient-RootNodeInfo.cs | 4 +- src/Nest/ElasticClient-Scroll.cs | 4 +- src/Nest/ElasticClient-Search.cs | 32 +- src/Nest/ElasticClient-Segments.cs | 4 +- src/Nest/ElasticClient-Snapshot.cs | 4 +- src/Nest/ElasticClient-Source.cs | 8 +- src/Nest/ElasticClient-State.cs | 4 +- src/Nest/ElasticClient-Stats.cs | 4 +- src/Nest/ElasticClient-Status.cs | 4 +- src/Nest/ElasticClient-Template.cs | 50 +- src/Nest/ElasticClient-Update.cs | 4 +- src/Nest/ElasticClient-UpdateSettings.cs | 4 +- src/Nest/ElasticClient-Validate.cs | 4 +- src/Nest/ElasticClient-Warmers.cs | 50 +- src/Nest/ElasticClient.cs | 20 +- src/Nest/Exception/ReindexException.cs | 4 +- src/Nest/ExposedInternals/INestSerializer.cs | 34 +- src/Nest/ExposedInternals/NestSerializer.cs | 209 +- src/Nest/RawDispatch.generated.cs | 1268 +- .../Converters/ConcreteTypeConverter.cs | 2 +- .../Converters/IndexSettingsConverter.cs | 2 +- .../Resolvers/Writers/TypeMappingWriter.cs | 9 +- .../Serializer/SsTextNestSerializer.cs | 24 +- .../ElasticsearchJsonNetSerializer.cs | 6 + .../YamlTestsBase.cs | 3 +- .../Core/Map/PutMappingRequestTests.cs | 2 +- 80 files changed, 38078 insertions(+), 6312 deletions(-) rename src/Elasticsearch.Net/Domain/{ElasticsearchDynamic.cs => DynamicDictionary.cs} (77%) diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/ApiEndpoint.cs b/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/ApiEndpoint.cs index 79050b3c2cf..2972e339bc2 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/ApiEndpoint.cs +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/ApiEndpoint.cs @@ -146,13 +146,19 @@ public IEnumerable CsharpMethods this.Url.Params = new Dictionary(); } queryStringParamName = this.CsharpMethodName + "QueryString"; - - - + var paraIndent = "\r\n\t\t///"; + var explanationOfT = + paraIndent + " - If T is of type byte[] deserialization will be shortcircuited" + + paraIndent + + " - If T is of type VoidResponse the response stream will be ignored completely"; var apiMethod = new CsharpMethod { QueryStringParamName = queryStringParamName, - ReturnType = "ElasticsearchResponse", + ReturnType = "ElasticsearchResponse", + ReturnTypeGeneric = "", + ReturnDescription = + "ElasticsearchResponse<T> holding the reponse body deserialized as T." + + explanationOfT, FullName = methodName, HttpMethod = method, Documentation = this.Documentation, @@ -164,15 +170,69 @@ public IEnumerable CsharpMethods args = args.Concat(new[] { - "Func<"+apiMethod.QueryStringParamName+", " + apiMethod.QueryStringParamName + "> queryString = null" - }); + "Func<"+apiMethod.QueryStringParamName+", " + apiMethod.QueryStringParamName + "> queryString = null", + "object deserializationState = null" + }).ToList(); apiMethod.Arguments = string.Join(", ", args); + yield return apiMethod; + + apiMethod = new CsharpMethod + { + QueryStringParamName = queryStringParamName, + ReturnType = "Task>", + ReturnTypeGeneric = "", + ReturnDescription = + "A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T." + + explanationOfT, + FullName = methodName + "Async", + HttpMethod = method, + Documentation = this.Documentation, + Arguments = string.Join(", ", args), + Path = path, + Parts = parts, + Url = this.Url + }; + ApiGenerator.PatchMethod(apiMethod); + yield return apiMethod; + + //No need for deserialization state when returning dynamicdictionary + args = args.Take(args.Count() - 1).ToList(); + var explanationOfDynamic = + paraIndent + + " - Dynamic dictionary is a special dynamic type that allows json to be traversed safely" + + paraIndent + + " - i.e result.Response.hits.hits[0].property.nested[\"nested_deeper\"]" + + paraIndent + + " - can be safely dispatched to a nullable type even if intermediate properties do not exist"; + + apiMethod = new CsharpMethod + { + QueryStringParamName = queryStringParamName, + ReturnType = "ElasticsearchResponse", + ReturnTypeGeneric = null, + ReturnDescription = + "ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary" + + explanationOfDynamic, + FullName = methodName, + HttpMethod = method, + Documentation = this.Documentation, + Arguments = string.Join(", ", args), + Path = path, + Parts = parts, + Url = this.Url + }; + ApiGenerator.PatchMethod(apiMethod); yield return apiMethod; + apiMethod = new CsharpMethod { QueryStringParamName = queryStringParamName, - ReturnType = "Task", + ReturnType = "Task>", + ReturnTypeGeneric = null, + ReturnDescription = + "Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary" + + explanationOfDynamic, FullName = methodName + "Async", HttpMethod = method, Documentation = this.Documentation, diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/CsharpMethod.cs b/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/CsharpMethod.cs index 031bb416172..6247eeebae1 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/CsharpMethod.cs +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/CsharpMethod.cs @@ -5,6 +5,8 @@ namespace CodeGeneration.LowLevelClient.Domain public class CsharpMethod { public string ReturnType { get; set; } + public string ReturnTypeGeneric { get; set; } + public string ReturnDescription { get; set; } public string FullName { get; set; } public string QueryStringParamName { get; set; } public string DescriptorType { get; set; } diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml index c89bea83673..9c5accef6c1 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml @@ -34,14 +34,22 @@ namespace Elasticsearch.Net var patchedUrl = Regex.Replace(url, @"{\w+}", (m) => "{" + (++i).ToString(CultureInfo.InvariantCulture) +"}"); - ///@method.HttpMethod @method.Path - ///
@method.Documentation
+ ///Represents a @method.HttpMethod on @method.Path + ///Returns: @Raw(method.ReturnDescription) + ///See also: @method.Documentation /// foreach (var part in method.Parts) { @Raw("///")@part.Description@Raw("") } - public @Raw(method.ReturnType) @(method.FullName)(@Raw(method.Arguments)) + @Raw("///Optional function to specify any additional querystring parameters for the request.") + if (!string.IsNullOrWhiteSpace(method.ReturnTypeGeneric)) + { + @Raw("///Optional state that will be passed to the deserialization call for the response") + } + @Raw("///"+method.ReturnDescription) + ///@Raw("") + public @Raw(method.ReturnType) @(method.FullName)@(Raw(method.ReturnTypeGeneric))(@Raw(method.Arguments)) { @foreach (ApiUrlPart part in method.Parts.Where(p=>p.Name != "body").ToList()) { @@ -49,7 +57,7 @@ namespace Elasticsearch.Net } @if (method.Parts.Any()) { - var url = "@(patchedUrl)".F(@string.Join(", ", method.Parts.Where(p=>p.Name != "body").Select(p=> "Encoded(" + p.Name +")" ))); + var url = "@(patchedUrl)".F(@string.Join(", ", method.Parts.Where(p=>p.Name != "body").Select(p=> "Encoded(" + p.Name +")" ))); } else { @@ -64,7 +72,12 @@ namespace Elasticsearch.Net @{ string requestMethod = method.ReturnType.StartsWith("Task<") ? "DoRequestAsync" : "DoRequest"; } - return this.@(requestMethod)("@method.HttpMethod", url@(method.Parts.Any(pp=>pp.Name == "body") ? ", body" : ", data: null"), queryString: nv); + return this.@(requestMethod)@(Raw(method.ReturnTypeGeneric ?? ""))("@method.HttpMethod", url@(method.Parts.Any(pp=>pp.Name == "body") ? ", body" : ", data: null"), + queryString: nv + @if(!string.IsNullOrWhiteSpace(method.ReturnTypeGeneric)) + { + , deserializationState: deserializationState + } ); } } diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/IElasticsearchClient.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/IElasticsearchClient.Generated.cshtml index a7e9eeaa976..bca49c16fdb 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/IElasticsearchClient.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/IElasticsearchClient.Generated.cshtml @@ -20,9 +20,9 @@ namespace Elasticsearch.Net ///
public interface IElasticsearchClient { - IConnection Connection { get; } - IConnectionConfigurationValues Settings { get; } - IElasticsearchSerializer Serializer { get; } + //IConnection Connection { get; } + //IConnectionConfigurationValues Settings { get; } + //IElasticsearchSerializer Serializer { get; } @foreach(var kv in Model.Endpoints) { @@ -31,14 +31,23 @@ namespace Elasticsearch.Net foreach(var method in endpoint.GetCsharpMethods()) { - ///@method.HttpMethod @method.Path - ///
@method.Documentation
+ ///Represents a @method.HttpMethod on @method.Path + ///Returns: @Raw(method.ReturnDescription) + ///See also: @method.Documentation /// @foreach (var part in method.Parts) { @Raw("///")@part.Description@Raw("") } - @Raw(method.ReturnType) @(method.FullName)(@Raw(method.Arguments)); + @Raw("///Optional function to specify any additional querystring parameters for the request.") + @if (!string.IsNullOrWhiteSpace(method.ReturnTypeGeneric)) + { + @Raw("///Optional state that will be passed to the deserialization call for the response") + } + @Raw("///"+method.ReturnDescription) + ///@Raw("") + + @Raw(method.ReturnType) @(method.FullName)@(Raw(method.ReturnTypeGeneric))(@Raw(method.Arguments)); } } diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/RawDispatch.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/RawDispatch.Generated.cshtml index 6ae69883e9c..196d1c183ff 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/RawDispatch.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/RawDispatch.Generated.cshtml @@ -30,13 +30,13 @@ namespace Nest continue; } var generate = new [] { - new { Name = endpoint.CsharpMethodName + "Dispatch", Returns = "ElasticsearchResponse" , Async = false}, - new { Name = endpoint.CsharpMethodName + "DispatchAsync", Returns = "Task", Async = true }, + new { Name = endpoint.CsharpMethodName + "Dispatch", Returns = "ElasticsearchResponse" , Async = false}, + new { Name = endpoint.CsharpMethodName + "DispatchAsync", Returns = "Task>", Async = true }, }; foreach(var gen in generate) { - internal @Raw(gen.Returns) @(gen.Name)(ElasticsearchPathInfo<@peek.QueryStringParamName> pathInfo @if (endpoint.Body != null) {, object body}) + internal @Raw(gen.Returns) @(Raw(gen.Name))(ElasticsearchPathInfo<@peek.QueryStringParamName> pathInfo @if (endpoint.Body != null) {, object body}, object deserializationState = null) { switch(pathInfo.HttpMethod) { @@ -51,22 +51,22 @@ namespace Nest @foreach (var dispatch in dispatches) { var method = dispatch.CsharpMethod; - var name = method.FullName + ((gen.Async) ? "Async" : ""); + var name = method.FullName + ((gen.Async) ? "Async" : ""); //@method.HttpMethod @method.Path if (i == 0 && !dispatch.IfChecks.Any()) { - return this.Raw.@(name)(@Raw(string.Join(",", dispatch.MethodArguments))); + return this.Raw.@(Raw(name))(@Raw(string.Join(",", dispatch.MethodArguments)), deserializationState); } else { if (dispatch.IfChecks.Any()) { if (@Raw(string.Join(" && ", dispatch.IfChecks))) - return this.Raw.@(name)(@Raw(string.Join(",", dispatch.MethodArguments))); + return this.Raw.@(Raw(name))(@Raw(string.Join(",", dispatch.MethodArguments)), deserializationState); } else { - return this.Raw.@(name)(@Raw(string.Join(",", dispatch.MethodArguments))); + return this.Raw.@(Raw(name))(@Raw(string.Join(",", dispatch.MethodArguments)), deserializationState); } } if (i == totalDispatches - 1 && allWithIfChecks) diff --git a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs index bf2b1535535..6469a1e9790 100644 --- a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs +++ b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs @@ -44,7 +44,7 @@ public ThriftConnection(IConnectionConfigurationValues connectionSettings) #region IConnection Members - public Task Get(Uri uri) + public Task Get(Uri uri) { var restRequest = new RestRequest(); restRequest.Method = Method.GET; diff --git a/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs b/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs index d39422b7c05..0f49e827386 100644 --- a/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs +++ b/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs @@ -62,8 +62,8 @@ public class ConnectionConfiguration : IConnectionConfigurationValues TimeSpan? IConnectionConfigurationValues.SniffInformationLifeSpan { get{ return _sniffLifeSpan; } } private bool _traceEnabled; bool IConnectionConfigurationValues.TraceEnabled { get{ return _traceEnabled; } } - private Action _connectionStatusHandler; - Action IConnectionConfigurationValues.ConnectionStatusHandler { get{ return _connectionStatusHandler; } } + private Action _connectionStatusHandler; + Action IConnectionConfigurationValues.ConnectionStatusHandler { get{ return _connectionStatusHandler; } } private NameValueCollection _queryString; NameValueCollection IConnectionConfigurationValues.QueryStringParameters { get{ return _queryString; } } @@ -216,7 +216,7 @@ public T UsePrettyResponses(bool b = true) return (T) this; } - protected void ConnectionStatusDefaultHandler(ElasticsearchResponse status) + protected void ConnectionStatusDefaultHandler(IElasticsearchResponse status) { return; } @@ -224,7 +224,7 @@ protected void ConnectionStatusDefaultHandler(ElasticsearchResponse status) /// /// Global callback for every response that NEST receives, useful for custom logging. /// - public T SetConnectionStatusHandler(Action handler) + public T SetConnectionStatusHandler(Action handler) { handler.ThrowIfNull("handler"); this._connectionStatusHandler = handler; diff --git a/src/Elasticsearch.Net/Connection/ElasticsearchResponseTracer.cs b/src/Elasticsearch.Net/Connection/ElasticsearchResponseTracer.cs index 89af35c4d1b..c07196720cd 100644 --- a/src/Elasticsearch.Net/Connection/ElasticsearchResponseTracer.cs +++ b/src/Elasticsearch.Net/Connection/ElasticsearchResponseTracer.cs @@ -6,12 +6,12 @@ namespace Elasticsearch.Net.Connection { - public class ElasticsearchResponseTracer : IDisposable + public class ElasticsearchResponseTracer : IDisposable { private readonly bool _enabled; private Stopwatch _stopwatch; - public ElasticsearchResponse _result { get; set; } + public ElasticsearchResponse _result { get; set; } public ElasticsearchResponseTracer(bool enabled) { @@ -22,7 +22,7 @@ public ElasticsearchResponseTracer(bool enabled) } } - public void SetResult(ElasticsearchResponse status) + public void SetResult(ElasticsearchResponse status) { if (!_enabled) return; diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 2f048c0bb70..77969a88075 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Net; +using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -40,34 +41,33 @@ public HttpConnection(IConnectionConfigurationValues settings) this._enableTrace = settings.TraceEnabled; } - public virtual ElasticsearchResponse GetSync(Uri uri) + public virtual ElasticsearchResponse GetSync(Uri uri, object deserializationState = null) { - return this.HeaderOnlyRequest(uri, "GET"); + return this.HeaderOnlyRequest(uri, "GET", deserializationState); } - public virtual ElasticsearchResponse HeadSync(Uri uri) + public virtual ElasticsearchResponse HeadSync(Uri uri) { - return this.HeaderOnlyRequest(uri, "HEAD"); + return this.HeaderOnlyRequest(uri, "HEAD", null); } - public virtual ElasticsearchResponse PostSync(Uri uri, byte[] data) + public virtual ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializationState = null) { - return this.BodyRequest(uri, data, "POST"); + return this.BodyRequest(uri, data, "POST", deserializationState); } - public virtual ElasticsearchResponse PutSync(Uri uri, byte[] data) + public virtual ElasticsearchResponse PutSync(Uri uri, byte[] data, object deserializationState = null) { - return this.BodyRequest(uri, data, "PUT"); + return this.BodyRequest(uri, data, "PUT", deserializationState); } - public virtual ElasticsearchResponse DeleteSync(Uri uri) + public virtual ElasticsearchResponse DeleteSync(Uri uri, object deserializationState = null) { - var connection = this.CreateHttpWebRequest(uri, "DELETE"); - return this.DoSynchronousRequest(connection); + return this.HeaderOnlyRequest(uri, "DELETE", deserializationState); } - public virtual ElasticsearchResponse DeleteSync(Uri uri, byte[] data) + public virtual ElasticsearchResponse DeleteSync(Uri uri, byte[] data, object deserializationState = null) { - var connection = this.CreateHttpWebRequest(uri, "DELETE"); - return this.DoSynchronousRequest(connection, data); + return this.BodyRequest(uri, data, "DELETE", deserializationState); } + public virtual bool Ping(Uri uri) { var request = this.CreateHttpWebRequest(uri, "HEAD"); @@ -90,41 +90,42 @@ public virtual IList Sniff(Uri uri) { if (response.StatusCode != HttpStatusCode.OK) return new List(); - return Sniffer.FromStream(responseStream, this._ConnectionSettings.Serializer); + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int)response.StatusCode, "GET", uri.AbsolutePath, null); + return Sniffer.FromStream(cs, responseStream, this._ConnectionSettings.Serializer); } } - public virtual Task Get(Uri uri) + public virtual Task> Get(Uri uri, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "GET"); - return this.DoAsyncRequest(r); + return this.DoAsyncRequest(r); } - public virtual Task Head(Uri uri) + public virtual Task> Head(Uri uri) { var r = this.CreateHttpWebRequest(uri, "HEAD"); - return this.DoAsyncRequest(r); + return this.DoAsyncRequest(r); } - public virtual Task Post(Uri uri, byte[] data) + public virtual Task> Post(Uri uri, byte[] data, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "POST"); - return this.DoAsyncRequest(r, data); + return this.DoAsyncRequest(r, data); } - public virtual Task Put(Uri uri, byte[] data) + public virtual Task> Put(Uri uri, byte[] data, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "PUT"); - return this.DoAsyncRequest(r, data); + return this.DoAsyncRequest(r, data); } - public virtual Task Delete(Uri uri, byte[] data) + public virtual Task> Delete(Uri uri, byte[] data, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "DELETE"); - return this.DoAsyncRequest(r, data); + return this.DoAsyncRequest(r, data); } - public virtual Task Delete(Uri uri) + public virtual Task> Delete(Uri uri, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "DELETE"); - return this.DoAsyncRequest(r); + return this.DoAsyncRequest(r); } private static void ThreadTimeoutCallback(object state, bool timedOut) @@ -139,16 +140,16 @@ private static void ThreadTimeoutCallback(object state, bool timedOut) } } - private ElasticsearchResponse HeaderOnlyRequest(Uri uri, string method) + private ElasticsearchResponse HeaderOnlyRequest(Uri uri, string method, object deserializationState) { var r = this.CreateHttpWebRequest(uri, method); - return this.DoSynchronousRequest(r); + return this.DoSynchronousRequest(r, deserializationState: deserializationState); } - private ElasticsearchResponse BodyRequest(Uri uri, byte[] data, string method) + private ElasticsearchResponse BodyRequest(Uri uri, byte[] data, string method, object deserializationState) { var r = this.CreateHttpWebRequest(uri, method); - return this.DoSynchronousRequest(r, data); + return this.DoSynchronousRequest(r, data, deserializationState); } protected virtual HttpWebRequest CreateHttpWebRequest(Uri uri, string method) @@ -203,13 +204,13 @@ protected virtual HttpWebRequest CreateWebRequest(Uri uri, string method) return myReq; } - protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebRequest request, byte[] data = null) + protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) { var path = request.RequestUri.ToString(); var method = request.Method; - using (var tracer = new ElasticsearchResponseTracer(this._ConnectionSettings.TraceEnabled)) + using (var tracer = new ElasticsearchResponseTracer(this._ConnectionSettings.TraceEnabled)) { - ElasticsearchResponse cs = null; + ElasticsearchResponse cs = null; if (data != null) { using (var r = request.GetRequestStream()) @@ -223,16 +224,27 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebRequest requ using (var responseStream = response.GetResponseStream()) using (var memoryStream = new MemoryStream()) { - responseStream.CopyTo(memoryStream); - cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data, - memoryStream.ToArray()); + Stream s = responseStream; + if(_ConnectionSettings.UsesPrettyResponses) //TODO different setting + { + responseStream.CopyTo(memoryStream); + //use memory stream for serialization instead + //our own serializers have special handling for memorystream + //that will prevent double reads + s = memoryStream; + } + + cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + var result = this._ConnectionSettings.Serializer.Deserialize(cs, s, deserializationState); + cs.Response = result; + cs.ResponseRaw = memoryStream.ToArray(); tracer.SetResult(cs); return cs; } } catch (WebException webException) { - cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); + cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); tracer.SetResult(cs); _ConnectionSettings.ConnectionStatusHandler(cs); return cs; @@ -241,23 +253,23 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebRequest requ } - protected virtual Task DoAsyncRequest(HttpWebRequest request, byte[] data = null) + protected virtual Task> DoAsyncRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) { - var tcs = new TaskCompletionSource(); + var tcs = new TaskCompletionSource>(); if (this._ConnectionSettings.MaximumAsyncConnections <= 0 || this._ResourceLock == null) - return this.CreateIterateTask(request, data, tcs); + return this.CreateIterateTask(request, data, deserializationState, tcs); var timeout = this._ConnectionSettings.Timeout; var path = request.RequestUri.ToString(); var method = request.Method; if (!this._ResourceLock.WaitOne(timeout)) { - using (var tracer = new ElasticsearchResponseTracer(this._ConnectionSettings.TraceEnabled)) + using (var tracer = new ElasticsearchResponseTracer(this._ConnectionSettings.TraceEnabled)) { var m = "Could not start the operation before the timeout of " + timeout + "ms completed while waiting for the semaphore"; - var cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, new TimeoutException(m), method, path, data); + var cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, new TimeoutException(m), method, path, data); tcs.SetResult(cs); tracer.SetResult(cs); _ConnectionSettings.ConnectionStatusHandler(cs); @@ -266,7 +278,7 @@ protected virtual Task DoAsyncRequest(HttpWebRequest requ } try { - return this.CreateIterateTask(request, data, tcs); + return this.CreateIterateTask(request, data, deserializationState, tcs); } finally { @@ -274,15 +286,15 @@ protected virtual Task DoAsyncRequest(HttpWebRequest requ } } - private Task CreateIterateTask(HttpWebRequest request, byte[] data, TaskCompletionSource tcs) + private Task> CreateIterateTask(HttpWebRequest request, byte[] data, object deserializationState, TaskCompletionSource> tcs) { - this.Iterate(request, data, this._AsyncSteps(request, tcs, data), tcs); + this.Iterate(request, data, this._AsyncSteps(request, tcs, data, deserializationState), tcs); return tcs.Task; } - private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionSource tcs, byte[] data = null) + private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionSource> tcs, byte[] data, object deserializationState) { - using (var tracer = new ElasticsearchResponseTracer(this._ConnectionSettings.TraceEnabled)) + using (var tracer = new ElasticsearchResponseTracer(this._ConnectionSettings.TraceEnabled)) { var timeout = this._ConnectionSettings.Timeout; @@ -319,16 +331,25 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionSour using (var responseStream = response.GetResponseStream()) using (var memoryStream = new MemoryStream()) { - // Copy all data from the response stream - var buffer = new byte[BUFFER_SIZE]; - while (responseStream != null) + Stream s = responseStream; + if (_ConnectionSettings.UsesPrettyResponses) { - var read = Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, buffer, 0, BUFFER_SIZE, null); - yield return read; - if (read.Result == 0) break; - memoryStream.Write(buffer, 0, read.Result); + // Copy all data from the response stream + var buffer = new byte[BUFFER_SIZE]; + while (responseStream != null) + { + var read = Task.Factory.FromAsync(responseStream.BeginRead, responseStream.EndRead, buffer, 0, BUFFER_SIZE, null); + yield return read; + if (read.Result == 0) break; + memoryStream.Write(buffer, 0, read.Result); + } + s = memoryStream; } - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data, memoryStream.ToArray()); + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + var t = this._ConnectionSettings.Serializer.DeserializeAsync(cs, s, deserializationState); + yield return t; + cs.Response = t.Result; + cs.ResponseRaw = memoryStream.ToArray(); tcs.TrySetResult(cs); tracer.SetResult(cs); _ConnectionSettings.ConnectionStatusHandler(cs); @@ -336,7 +357,7 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionSour } } - public void Iterate(HttpWebRequest request, byte[] data, IEnumerable asyncIterator, TaskCompletionSource tcs) + public void Iterate(HttpWebRequest request, byte[] data, IEnumerable asyncIterator, TaskCompletionSource> tcs) { var enumerator = asyncIterator.GetEnumerator(); Action recursiveBody = null; @@ -353,16 +374,15 @@ public void Iterate(HttpWebRequest request, byte[] data, IEnumerable async { var path = request.RequestUri.ToString(); var method = request.Method; - var response = ElasticsearchResponse.CreateError(this._ConnectionSettings, exception, method, path, data); + var response = ElasticsearchResponse.CreateError(this._ConnectionSettings, exception, method, path, data); tcs.SetResult(response); } else tcs.TrySetException(exception); - // enumerator.Dispose(); + enumerator.Dispose(); } else if (enumerator.MoveNext()) { - //enumerator.Current.ContinueWith(recursiveBody, TaskContinuationOptions.ExecuteSynchronously); enumerator.Current.ContinueWith(recursiveBody); } else enumerator.Dispose(); diff --git a/src/Elasticsearch.Net/Connection/IConnection.cs b/src/Elasticsearch.Net/Connection/IConnection.cs index 10f33112bba..cfde6b5895f 100644 --- a/src/Elasticsearch.Net/Connection/IConnection.cs +++ b/src/Elasticsearch.Net/Connection/IConnection.cs @@ -8,23 +8,24 @@ namespace Elasticsearch.Net.Connection { public interface IConnection { - Task Get(Uri uri); - ElasticsearchResponse GetSync(Uri uri); - Task Head(Uri uri); - ElasticsearchResponse HeadSync(Uri uri); + Task> Get(Uri uri, object deserializationState = null); + ElasticsearchResponse GetSync(Uri uri, object deserializationState = null); - Task Post(Uri uri, byte[] data); - ElasticsearchResponse PostSync(Uri uri, byte[] data); + Task> Head(Uri uri); + ElasticsearchResponse HeadSync(Uri uri); - Task Put(Uri uri, byte[] data); - ElasticsearchResponse PutSync(Uri uri, byte[] data); + Task> Post(Uri uri, byte[] data, object deserializationState = null); + ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializationState = null); - Task Delete(Uri uri); - ElasticsearchResponse DeleteSync(Uri uri); + Task> Put(Uri uri, byte[] data, object deserializationState = null); + ElasticsearchResponse PutSync(Uri uri, byte[] data, object deserializationState = null); - Task Delete(Uri uri, byte[] data); - ElasticsearchResponse DeleteSync(Uri uri, byte[] data); + Task> Delete(Uri uri, object deserializationState = null); + ElasticsearchResponse DeleteSync(Uri uri, object deserializationState = null); + + Task> Delete(Uri uri, byte[] data, object deserializationState = null); + ElasticsearchResponse DeleteSync(Uri uri, byte[] data, object deserializationState = null); bool Ping(Uri uri); IList Sniff(Uri uri); diff --git a/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs b/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs index f6ecf5f2f5d..bf8222dc106 100644 --- a/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs +++ b/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs @@ -55,6 +55,6 @@ public interface IConnectionConfiguration where T : IConnectionConfigurat /// /// Global callback for every response that NEST receives, useful for custom logging. /// - T SetConnectionStatusHandler(Action handler); + T SetConnectionStatusHandler(Action handler); } } \ No newline at end of file diff --git a/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs b/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs index aae4446dc20..6bc65fe4b47 100644 --- a/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs +++ b/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs @@ -50,7 +50,7 @@ public interface IConnectionConfigurationValues /// /// Connection status handler that will be called everytime the connection receives anything. /// - Action ConnectionStatusHandler { get; } + Action ConnectionStatusHandler { get; } /// /// diff --git a/src/Elasticsearch.Net/Connection/ITransport.cs b/src/Elasticsearch.Net/Connection/ITransport.cs index 2b66a0d79e7..35ea00bd866 100644 --- a/src/Elasticsearch.Net/Connection/ITransport.cs +++ b/src/Elasticsearch.Net/Connection/ITransport.cs @@ -9,12 +9,24 @@ public interface ITransport IConnectionConfigurationValues Settings { get; } IElasticsearchSerializer Serializer { get; } - ElasticsearchResponse DoRequest(string method, string path, object data = null, NameValueCollection queryString = null, int retried = 0, int? seed = null); + ElasticsearchResponse DoRequest( + string method, + string path, + object data = null, + NameValueCollection queryString = null, + object serializationState = null, + int retried = 0, + int? seed = null + ); - Task DoRequestAsync( + Task> DoRequestAsync( string method, string path, - object data = null, NameValueCollection queryString = null, int retried = 0, int? seed = null); + object data = null, + NameValueCollection queryString = null, + object serializationState = null, + int retried = 0, + int? seed = null); } public interface ITransportValues diff --git a/src/Elasticsearch.Net/Connection/InMemoryConnection.cs b/src/Elasticsearch.Net/Connection/InMemoryConnection.cs index d2cf5869e90..836dc18bece 100644 --- a/src/Elasticsearch.Net/Connection/InMemoryConnection.cs +++ b/src/Elasticsearch.Net/Connection/InMemoryConnection.cs @@ -11,7 +11,6 @@ namespace Elasticsearch.Net.Connection /// public class InMemoryConnection : HttpConnection { - private ElasticsearchResponse _fixedResult; private readonly byte[] _fixedResultBytes = Encoding.UTF8.GetBytes("{ \"USING NEST IN MEMORY CONNECTION\" : null }"); public InMemoryConnection(IConnectionConfigurationValues settings) @@ -19,32 +18,27 @@ public InMemoryConnection(IConnectionConfigurationValues settings) { } - public InMemoryConnection(IConnectionConfigurationValues settings, ElasticsearchResponse fixedResult) - : base(settings) - { - this._fixedResult = fixedResult; - } - protected override ElasticsearchResponse DoSynchronousRequest(HttpWebRequest request, byte[] data = null) + protected override ElasticsearchResponse DoSynchronousRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) { - return this.ReturnConnectionStatus(request, data); + return this.ReturnConnectionStatus(request, data); } - private ElasticsearchResponse ReturnConnectionStatus(HttpWebRequest request, byte[] data) + private ElasticsearchResponse ReturnConnectionStatus(HttpWebRequest request, byte[] data) { var method = request.Method; var path = request.RequestUri.ToString(); - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, 200, method, path, data, _fixedResultBytes); + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, 200, method, path, data); _ConnectionSettings.ConnectionStatusHandler(cs); return cs; } - protected override Task DoAsyncRequest(HttpWebRequest request, byte[] data = null) + protected override Task> DoAsyncRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) { - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - var cs = this.ReturnConnectionStatus(request, data); + var cs = this.ReturnConnectionStatus(request, data); _ConnectionSettings.ConnectionStatusHandler(cs); return cs; }); diff --git a/src/Elasticsearch.Net/Connection/Transport.cs b/src/Elasticsearch.Net/Connection/Transport.cs index a0bf409ec39..e33e80836a7 100644 --- a/src/Elasticsearch.Net/Connection/Transport.cs +++ b/src/Elasticsearch.Net/Connection/Transport.cs @@ -69,11 +69,12 @@ private int GetMaximumRetries() } - public ElasticsearchResponse DoRequest( + public ElasticsearchResponse DoRequest( string method, string path, object data = null, NameValueCollection queryString = null, + object deserializationState= null, int retried = 0, int? seed = null) { @@ -82,7 +83,7 @@ public ElasticsearchResponse DoRequest( if (queryString != null) path += queryString.ToQueryString(); var postData = PostData(data); - ElasticsearchResponse response = null; + ElasticsearchResponse response = null; int initialSeed; bool shouldPingHint; var baseUri = this._connectionPool.GetNext(seed, out initialSeed, out shouldPingHint); @@ -94,14 +95,14 @@ public ElasticsearchResponse DoRequest( this._connection.Ping(CreateUriToPath(baseUri, "")); var uri = CreateUriToPath(baseUri, path); - response = _doRequest(method, uri, postData); + response = _doRequest(method, uri, postData, deserializationState); if (response != null && response.SuccessOrKnownError) return response; } catch (Exception e) { seenError = true; - return RetryRequest(method, path, data, retried, baseUri, initialSeed, e); + return RetryRequest(method, path, data, deserializationState, retried, baseUri, initialSeed, e); } finally { @@ -109,11 +110,11 @@ public ElasticsearchResponse DoRequest( if (!seenError && response != null && response.SuccessOrKnownError) this._connectionPool.MarkAlive(baseUri); } - return RetryRequest(method, path, data, retried, baseUri, initialSeed, null); + return RetryRequest(method, path, data, deserializationState, retried, baseUri, initialSeed, null); } - private ElasticsearchResponse RetryRequest( - string method, string path, object data, int retried, Uri baseUri, + private ElasticsearchResponse RetryRequest( + string method, string path, object data, object deserializationState, int retried, Uri baseUri, int initialSeed, Exception e) { var maxRetries = this.GetMaximumRetries(); @@ -125,36 +126,37 @@ private ElasticsearchResponse RetryRequest( if (retried < maxRetries) { - return this.DoRequest(method, path, data, null, ++retried, initialSeed); + return this.DoRequest(method, path, data, null, deserializationState, ++retried, initialSeed); } throw new OutOfNodesException(exceptionMessage, e); } - private ElasticsearchResponse _doRequest(string method, Uri uri, byte[] postData) + private ElasticsearchResponse _doRequest(string method, Uri uri, byte[] postData, object deserializationState) { switch (method.ToLowerInvariant()) { case "post": - return this._connection.PostSync(uri, postData); + return this._connection.PostSync(uri, postData, deserializationState); case "put": - return this._connection.PutSync(uri, postData); + return this._connection.PutSync(uri, postData, deserializationState); case "delete": return postData == null || postData.Length == 0 - ? this._connection.DeleteSync(uri) - : this._connection.DeleteSync(uri, postData); + ? this._connection.DeleteSync(uri, deserializationState) + : this._connection.DeleteSync(uri, postData, deserializationState); case "head": - return this._connection.HeadSync(uri); + return this._connection.HeadSync(uri); case "get": - return this._connection.GetSync(uri); + return this._connection.GetSync(uri, deserializationState); } throw new Exception("Unknown HTTP method " + method); } - public Task DoRequestAsync( + public Task> DoRequestAsync( string method, string path, object data = null, NameValueCollection queryString = null, + object deserializationState = null, int retried = 0, int? seed = null) { @@ -173,24 +175,24 @@ public Task DoRequestAsync( } catch (Exception e) { - return this.RetryRequestAsync(method, path, data, retried, baseUri, initialSeed, e); + return this.RetryRequestAsync(method, path, data, deserializationState, retried, baseUri, initialSeed, e); } } var uri = CreateUriToPath(baseUri, path); - return _doRequestAsync(method, uri, postData).ContinueWith(t=> + return _doRequestAsync(method, uri, postData, deserializationState).ContinueWith(t=> { if (t.IsCanceled) return null; if (t.IsFaulted) - return this.RetryRequestAsync(method, path, data, retried, baseUri, initialSeed, t.Exception); + return this.RetryRequestAsync(method, path, data, deserializationState, retried, baseUri, initialSeed, t.Exception); if (t.Result.SuccessOrKnownError) return t; - return this.RetryRequestAsync(method, path, data, retried, baseUri, initialSeed, null); + return this.RetryRequestAsync(method, path, data, deserializationState, retried, baseUri, initialSeed, null); - }).Unwrap(); + }).Unwrap>(); } - private Task RetryRequestAsync( - string method, string path, object data, int retried, Uri baseUri, + private Task> RetryRequestAsync( + string method, string path, object data, object deserializationState, int retried, Uri baseUri, int initialSeed, Exception e) { var maxRetries = this.GetMaximumRetries(); @@ -201,26 +203,26 @@ private Task RetryRequestAsync( this.Sniff(); if (retried < maxRetries) { - return this.DoRequestAsync(method, path, data, null, ++retried, initialSeed); + return this.DoRequestAsync(method, path, data, null, deserializationState, ++retried, initialSeed); } throw new OutOfNodesException(exceptionMessage, e); } - private Task _doRequestAsync(string method, Uri uri, byte[] postData) + private Task> _doRequestAsync(string method, Uri uri, byte[] postData, object deserializationState) { switch (method.ToLowerInvariant()) { case "post": - return this._connection.Post(uri, postData); + return this._connection.Post(uri, postData, deserializationState); case "put": - return this._connection.Put(uri, postData); + return this._connection.Put(uri, postData, deserializationState); case "delete": return postData == null || postData.Length == 0 - ? this._connection.Delete(uri) - : this._connection.Delete(uri, postData); + ? this._connection.Delete(uri, deserializationState) + : this._connection.Delete(uri, postData, deserializationState); case "head": - return this._connection.Head(uri); + return this._connection.Head(uri); case "get": - return this._connection.Get(uri); + return this._connection.Get(uri, deserializationState); } throw new Exception("Unknown HTTP method " + method); } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchDynamic.cs b/src/Elasticsearch.Net/Domain/DynamicDictionary.cs similarity index 77% rename from src/Elasticsearch.Net/Domain/ElasticsearchDynamic.cs rename to src/Elasticsearch.Net/Domain/DynamicDictionary.cs index 2f0d9470393..a28c84f0fd3 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchDynamic.cs +++ b/src/Elasticsearch.Net/Domain/DynamicDictionary.cs @@ -1,5 +1,6 @@ -//This is nancyfx's dynamicdictionary renamed to ElasticsearchDynamic -//it adds the ability to chain dynamic property access without binding on null ref errors. +//This is nancyfx's dynamicdictionary +//it is slightly modified to add the ability to chain dynamic property access of arbitrary depth +//without binding on null ref errors in between. using System; using System.Collections; @@ -11,9 +12,9 @@ namespace Elasticsearch.Net /// /// A dictionary that supports dynamic access. /// - public class ElasticsearchDynamic : + public class DynamicDictionary : DynamicObject, - IEquatable, + IEquatable, IEnumerable, IDictionary { @@ -22,12 +23,12 @@ public class ElasticsearchDynamic : /// /// Returns an empty dynamic dictionary. /// - /// A instance. - public static ElasticsearchDynamic Empty + /// A instance. + public static DynamicDictionary Empty { get { - return new ElasticsearchDynamic(); + return new DynamicDictionary(); } } @@ -35,10 +36,10 @@ public static ElasticsearchDynamic Empty /// Creates a dynamic dictionary from an instance. /// /// An instance, that the dynamic dictionary should be created from. - /// An instance. - public static ElasticsearchDynamic Create(IDictionary values) + /// An instance. + public static DynamicDictionary Create(IDictionary values) { - var instance = new ElasticsearchDynamic(); + var instance = new DynamicDictionary(); foreach (var key in values.Keys) { @@ -128,11 +129,11 @@ public dynamic this[string name] } /// - /// Indicates whether the current is equal to another object of the same type. + /// Indicates whether the current is equal to another object of the same type. /// /// if the current instance is equal to the parameter; otherwise, . - /// An instance to compare with this instance. - public bool Equals(ElasticsearchDynamic other) + /// An instance to compare with this instance. + public bool Equals(DynamicDictionary other) { if (ReferenceEquals(null, other)) { @@ -159,7 +160,7 @@ public override bool Equals(object obj) return true; } - return obj.GetType() == typeof(ElasticsearchDynamic) && this.Equals((ElasticsearchDynamic)obj); + return obj.GetType() == typeof(DynamicDictionary) && this.Equals((DynamicDictionary)obj); } /// @@ -172,16 +173,16 @@ IEnumerator> IEnumerable - /// Returns a hash code for this . + /// Returns a hash code for this . /// - /// A hash code for this , suitable for use in hashing algorithms and data structures like a hash table. + /// A hash code for this , suitable for use in hashing algorithms and data structures like a hash table. public override int GetHashCode() { return (dictionary != null ? dictionary.GetHashCode() : 0); } /// - /// Adds an element with the provided key and value to the . + /// Adds an element with the provided key and value to the . /// /// The object to use as the key of the element to add. /// The object to use as the value of the element to add. @@ -191,29 +192,29 @@ public void Add(string key, dynamic value) } /// - /// Adds an item to the . + /// Adds an item to the . /// - /// The object to add to the . + /// The object to add to the . public void Add(KeyValuePair item) { this[item.Key] = item.Value; } /// - /// Determines whether the contains an element with the specified key. + /// Determines whether the contains an element with the specified key. /// - /// if the contains an element with the key; otherwise, . + /// if the contains an element with the key; otherwise, . /// - /// The key to locate in the . + /// The key to locate in the . public bool ContainsKey(string key) { return this.dictionary.ContainsKey(key); } /// - /// Gets an containing the keys of the . + /// Gets an containing the keys of the . /// - /// An containing the keys of the . + /// An containing the keys of the . public ICollection Keys { get { return this.dictionary.Keys; } @@ -222,7 +223,7 @@ public ICollection Keys /// /// Gets the value associated with the specified key. /// - /// if the contains an element with the specified key; otherwise, . + /// if the contains an element with the specified key; otherwise, . /// The key whose value to get. /// When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the parameter. This parameter is passed uninitialized. public bool TryGetValue(string key, out dynamic value) @@ -231,7 +232,7 @@ public bool TryGetValue(string key, out dynamic value) } /// - /// Removes all items from the . + /// Removes all items from the . /// public void Clear() { @@ -239,20 +240,20 @@ public void Clear() } /// - /// Gets the number of elements contained in the . + /// Gets the number of elements contained in the . /// - /// The number of elements contained in the . + /// The number of elements contained in the . public int Count { get { return this.dictionary.Count; } } /// - /// Determines whether the contains a specific value. + /// Determines whether the contains a specific value. /// - /// if is found in the ; otherwise, . + /// if is found in the ; otherwise, . /// - /// The object to locate in the . + /// The object to locate in the . public bool Contains(KeyValuePair item) { var dynamicValueKeyValuePair = @@ -262,9 +263,9 @@ public bool Contains(KeyValuePair item) } /// - /// Copies the elements of the to an , starting at a particular index. + /// Copies the elements of the to an , starting at a particular index. /// - /// The one-dimensional that is the destination of the elements copied from the . The must have zero-based indexing. + /// The one-dimensional that is the destination of the elements copied from the . The must have zero-based indexing. /// The zero-based index in at which copying begins. public void CopyTo(KeyValuePair[] array, int arrayIndex) { @@ -272,7 +273,7 @@ public void CopyTo(KeyValuePair[] array, int arrayIndex) } /// - /// Gets a value indicating whether the is read-only. + /// Gets a value indicating whether the is read-only. /// /// Always returns . public bool IsReadOnly @@ -281,7 +282,7 @@ public bool IsReadOnly } /// - /// Removes the element with the specified key from the . + /// Removes the element with the specified key from the . /// /// if the element is successfully removed; otherwise, . /// The key of the element to remove. @@ -292,10 +293,10 @@ public bool Remove(string key) } /// - /// Removes the first occurrence of a specific object from the . + /// Removes the first occurrence of a specific object from the . /// - /// if was successfully removed from the ; otherwise, . - /// The object to remove from the . + /// if was successfully removed from the ; otherwise, . + /// The object to remove from the . public bool Remove(KeyValuePair item) { var dynamicValueKeyValuePair = @@ -305,9 +306,9 @@ public bool Remove(KeyValuePair item) } /// - /// Gets an containing the values in the . + /// Gets an containing the values in the . /// - /// An containing the values in the . + /// An containing the values in the . public ICollection Values { get { return this.dictionary.Values; } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index 86cf585c31c..68617607ae1 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -14,7 +14,18 @@ namespace Elasticsearch.Net { - public class ElasticsearchResponse : ElasticsearchResponse + public interface IElasticsearchResponse + { + bool Success { get; } + IConnectionConfigurationValues Settings { get; } + ConnectionError Error { get; } + string RequestMethod { get; } + string RequestUrl { get; } + byte[] Request { get; } + int? HttpStatusCode { get; } + } + + public class ElasticsearchResponse : ElasticsearchResponse, IElasticsearchResponse { private string _result; @@ -24,8 +35,8 @@ public string Result } private static readonly byte _startAccolade = (byte)'{'; - private ElasticsearchDynamic _response; - public ElasticsearchDynamic DynamicResult + private DynamicDictionary _response; + public DynamicDictionary DynamicResult { get { @@ -34,8 +45,8 @@ public ElasticsearchDynamic DynamicResult if (Response[0] != _startAccolade) return null; - if (_response == null) - this._response = ElasticsearchDynamic.Create(this.Deserialize>()); + //if (_response == null) + //this._response = ElasticsearchDynamic.Create(this.Deserialize>()); return this._response; } } @@ -83,15 +94,6 @@ public static ElasticsearchResponse Create(IConnectionConfigurationValues settin return cs; } - /// - /// Returns a response of type R based on the connection status by trying parsing status.Result into R - /// - /// - public virtual T Deserialize(bool allow404 = false) where T : class - { - return this.Serializer.Deserialize(this.Response); - } - public override string ToString() { var r = this; @@ -112,7 +114,7 @@ public override string ToString() } } - public class ElasticsearchResponse + public class ElasticsearchResponse : IElasticsearchResponse { protected static readonly string _printFormat; protected static readonly string _errorFormat; @@ -127,6 +129,10 @@ public class ElasticsearchResponse public T Response { get; protected internal set; } public byte[] Request { get; protected internal set; } + /// + /// The raw byte response, only set when IncludeRawResponse() is set on Connection configuration + /// + public byte[] ResponseRaw { get; protected internal set; } public int? HttpStatusCode { get; protected internal set; } @@ -152,7 +158,39 @@ protected ElasticsearchResponse(IConnectionConfigurationValues settings) this.Settings = settings; this.Serializer = settings.Serializer; } - + private ElasticsearchResponse(IConnectionConfigurationValues settings, Exception e) : this(settings) + { + this.Success = false; + this.Error = new ConnectionError(e); + if (this.Error.HttpStatusCode != null) + this.HttpStatusCode = (int) this.Error.HttpStatusCode; + } + private ElasticsearchResponse(IConnectionConfigurationValues settings, int statusCode) : this(settings) + { + this.Success = statusCode >= 200 && statusCode < 300; + if (!this.Success) + { + var exception = new ConnectionException(statusCode); + this.Error = new ConnectionError(exception); + } + this.HttpStatusCode = statusCode; + } + public static ElasticsearchResponse CreateError(IConnectionConfigurationValues settings, Exception e, string method, string path, byte[] request) + { + var cs = new ElasticsearchResponse(settings, e); + cs.Request = request; + cs.RequestUrl = path; + cs.RequestMethod = method; + return cs; + } + public static ElasticsearchResponse Create(IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request) + { + var cs = new ElasticsearchResponse(settings, statusCode); + cs.Request = request; + cs.RequestUrl = path; + cs.RequestMethod = method; + return cs; + } static ElasticsearchResponse() { diff --git a/src/Elasticsearch.Net/Elasticsearch.Net.csproj b/src/Elasticsearch.Net/Elasticsearch.Net.csproj index 3d5c152b32a..b2e82c14e10 100644 --- a/src/Elasticsearch.Net/Elasticsearch.Net.csproj +++ b/src/Elasticsearch.Net/Elasticsearch.Net.csproj @@ -66,7 +66,7 @@ - + diff --git a/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs b/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs index 0c7ef40afed..35fa3319ac7 100644 --- a/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs +++ b/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs @@ -16,13 +16,22 @@ public partial class ElasticsearchClient : IElasticsearchClient { - ///POST /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///The operation definition and data (action-data pairs), separated by newlines - public ElasticsearchResponse Bulk(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Bulk(object body, Func queryString = null, object deserializationState = null) { - var url = "_bulk".F(); + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { @@ -30,16 +39,28 @@ public ElasticsearchResponse Bulk(object body, Func("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///The operation definition and data (action-data pairs), separated by newlines - public Task BulkAsync(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> BulkAsync(object body, Func queryString = null, object deserializationState = null) { - var url = "_bulk".F(); + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { @@ -47,18 +68,29 @@ public Task BulkAsync(object body, Func("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public ElasticsearchResponse Bulk(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Bulk(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_bulk".F(Encoded(index)); + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { @@ -66,18 +98,28 @@ public ElasticsearchResponse Bulk(string index, object body, Func("POST", url, body, + queryString: nv + ); } - ///POST /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public Task BulkAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> BulkAsync(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_bulk".F(Encoded(index)); + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { @@ -85,20 +127,29 @@ public Task BulkAsync(string index, object body, Func("POST", url, body, + queryString: nv + ); } - ///POST /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one - ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public ElasticsearchResponse Bulk(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Bulk(string index, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -106,20 +157,30 @@ public ElasticsearchResponse Bulk(string index, string type, object body, Func("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one - ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public Task BulkAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> BulkAsync(string index, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -127,16 +188,31 @@ public Task BulkAsync(string index, string type, object b if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// + ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public ElasticsearchResponse BulkPut(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Bulk(string index, object body, Func queryString = null) { - var url = "_bulk".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -144,16 +220,30 @@ public ElasticsearchResponse BulkPut(object body, Func("POST", url, body, + queryString: nv + ); } - ///PUT /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// + ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public Task BulkPutAsync(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> BulkAsync(string index, object body, Func queryString = null) { - var url = "_bulk".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -161,18 +251,31 @@ public Task BulkPutAsync(object body, Func("POST", url, body, + queryString: nv + ); } - ///PUT /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one + ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public ElasticsearchResponse BulkPut(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Bulk(string index, string type, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_bulk".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { @@ -180,18 +283,32 @@ public ElasticsearchResponse BulkPut(string index, object body, Func("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/{type}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one + ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public Task BulkPutAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> BulkAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_bulk".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { @@ -199,20 +316,33 @@ public Task BulkPutAsync(string index, object body, Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public ElasticsearchResponse BulkPut(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Bulk(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { @@ -220,20 +350,32 @@ public ElasticsearchResponse BulkPut(string index, string type, object body, Fun if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///PUT /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/{type}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - public Task BulkPutAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> BulkAsync(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { @@ -241,7978 +383,26996 @@ public Task BulkPutAsync(string index, string type, objec if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /_cat/aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ///Represents a PUT on /_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - public ElasticsearchResponse CatAliases(Func queryString = null) + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse BulkPut(object body, Func queryString = null, object deserializationState = null) { - var url = "_cat/aliases"; + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAliasesQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ///Represents a PUT on /_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - public Task CatAliasesAsync(Func queryString = null) + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> BulkPutAsync(object body, Func queryString = null, object deserializationState = null) { - var url = "_cat/aliases"; + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAliasesQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ///Represents a PUT on /_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///A comma-separated list of alias names to return - public ElasticsearchResponse CatAliases(string name, Func queryString = null) + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse BulkPut(object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_cat/aliases/{0}".F(Encoded(name)); + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAliasesQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///GET /_cat/aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ///Represents a PUT on /_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///A comma-separated list of alias names to return - public Task CatAliasesAsync(string name, Func queryString = null) + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> BulkPutAsync(object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_cat/aliases/{0}".F(Encoded(name)); + var url = "_bulk".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAliasesQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///GET /_cat/allocation - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ///Represents a PUT on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - public ElasticsearchResponse CatAllocation(Func queryString = null) + ///Default index for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse BulkPut(string index, object body, Func queryString = null, object deserializationState = null) { - var url = "_cat/allocation"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAllocationQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/allocation - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ///Represents a PUT on /{index}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - public Task CatAllocationAsync(Func queryString = null) + ///Default index for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> BulkPutAsync(string index, object body, Func queryString = null, object deserializationState = null) { - var url = "_cat/allocation"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAllocationQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/allocation/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ///Represents a PUT on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///A comma-separated list of node IDs or names to limit the returned information - public ElasticsearchResponse CatAllocation(string node_id, Func queryString = null) + ///Default index for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse BulkPut(string index, object body, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cat/allocation/{0}".F(Encoded(node_id)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAllocationQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///GET /_cat/allocation/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ///Represents a PUT on /{index}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///A comma-separated list of node IDs or names to limit the returned information - public Task CatAllocationAsync(string node_id, Func queryString = null) + ///Default index for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> BulkPutAsync(string index, object body, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cat/allocation/{0}".F(Encoded(node_id)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_bulk".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatAllocationQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///GET /_cat/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - public ElasticsearchResponse CatCount(Func queryString = null) + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse BulkPut(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_cat/count"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatCountQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - public Task CatCountAsync(Func queryString = null) + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> BulkPutAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_cat/count"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatCountQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/count/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///A comma-separated list of index names to limit the returned information - public ElasticsearchResponse CatCount(string index, Func queryString = null) + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse BulkPut(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "_cat/count/{0}".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatCountQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///GET /_cat/count/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - ///A comma-separated list of index names to limit the returned information - public Task CatCountAsync(string index, Func queryString = null) + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> BulkPutAsync(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "_cat/count/{0}".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_bulk".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatCountQueryString()); + var qs = queryString(new BulkQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///GET /_cat/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html
+ ///Represents a GET on /_cat/aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - public ElasticsearchResponse CatHealth(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatAliases(Func queryString = null, object deserializationState = null) { - var url = "_cat/health"; + var url = "_cat/aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatHealthQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html
+ ///Represents a GET on /_cat/aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - public Task CatHealthAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatAliasesAsync(Func queryString = null, object deserializationState = null) { - var url = "_cat/health"; + var url = "_cat/aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatHealthQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html
+ ///Represents a GET on /_cat/aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - public ElasticsearchResponse CatHelp(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatAliases(Func queryString = null) { - var url = "_cat"; + var url = "_cat/aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatHelpQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html
+ ///Represents a GET on /_cat/aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - public Task CatHelpAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatAliasesAsync(Func queryString = null) { - var url = "_cat"; + var url = "_cat/aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatHelpQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/indices - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///Represents a GET on /_cat/aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - public ElasticsearchResponse CatIndices(Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatAliases(string name, Func queryString = null, object deserializationState = null) { - var url = "_cat/indices"; + name.ThrowIfNullOrEmpty("name"); + var url = "_cat/aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatIndicesQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/indices - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///Represents a GET on /_cat/aliases/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - public Task CatIndicesAsync(Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatAliasesAsync(string name, Func queryString = null, object deserializationState = null) { - var url = "_cat/indices"; + name.ThrowIfNullOrEmpty("name"); + var url = "_cat/aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatIndicesQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/indices/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///Represents a GET on /_cat/aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - ///A comma-separated list of index names to limit the returned information - public ElasticsearchResponse CatIndices(string index, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatAliases(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "_cat/indices/{0}".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_cat/aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatIndicesQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/indices/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///Represents a GET on /_cat/aliases/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - ///A comma-separated list of index names to limit the returned information - public Task CatIndicesAsync(string index, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatAliasesAsync(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "_cat/indices/{0}".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_cat/aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatIndicesQueryString()); + var qs = queryString(new CatAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/master - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html
+ ///Represents a GET on /_cat/allocation + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public ElasticsearchResponse CatMaster(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatAllocation(Func queryString = null, object deserializationState = null) { - var url = "_cat/master"; + var url = "_cat/allocation"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatMasterQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/master - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html
+ ///Represents a GET on /_cat/allocation + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public Task CatMasterAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatAllocationAsync(Func queryString = null, object deserializationState = null) { - var url = "_cat/master"; + var url = "_cat/allocation"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatMasterQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html
+ ///Represents a GET on /_cat/allocation + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public ElasticsearchResponse CatNodes(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatAllocation(Func queryString = null) { - var url = "_cat/nodes"; + var url = "_cat/allocation"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatNodesQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html
+ ///Represents a GET on /_cat/allocation + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public Task CatNodesAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatAllocationAsync(Func queryString = null) { - var url = "_cat/nodes"; + var url = "_cat/allocation"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatNodesQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html
+ ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public ElasticsearchResponse CatPendingTasks(Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatAllocation(string node_id, Func queryString = null, object deserializationState = null) { - var url = "_cat/pending_tasks"; + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cat/allocation/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatPendingTasksQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html
+ ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public Task CatPendingTasksAsync(Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatAllocationAsync(string node_id, Func queryString = null, object deserializationState = null) { - var url = "_cat/pending_tasks"; + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cat/allocation/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatPendingTasksQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/recovery - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public ElasticsearchResponse CatRecovery(Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatAllocation(string node_id, Func queryString = null) { - var url = "_cat/recovery"; + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cat/allocation/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatRecoveryQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/recovery - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - public Task CatRecoveryAsync(Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatAllocationAsync(string node_id, Func queryString = null) { - var url = "_cat/recovery"; + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cat/allocation/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatRecoveryQueryString()); + var qs = queryString(new CatAllocationQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/recovery/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///Represents a GET on /_cat/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - ///A comma-separated list of index names to limit the returned information - public ElasticsearchResponse CatRecovery(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatCount(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "_cat/recovery/{0}".F(Encoded(index)); + var url = "_cat/count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatRecoveryQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/recovery/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///Represents a GET on /_cat/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - ///A comma-separated list of index names to limit the returned information - public Task CatRecoveryAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatCountAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "_cat/recovery/{0}".F(Encoded(index)); + var url = "_cat/count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatRecoveryQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/shards - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Represents a GET on /_cat/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - public ElasticsearchResponse CatShards(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatCount(Func queryString = null) { - var url = "_cat/shards"; + var url = "_cat/count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatShardsQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/shards - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Represents a GET on /_cat/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - public Task CatShardsAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatCountAsync(Func queryString = null) { - var url = "_cat/shards"; + var url = "_cat/count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatShardsQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/shards/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Represents a GET on /_cat/count/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// ///A comma-separated list of index names to limit the returned information - public ElasticsearchResponse CatShards(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatCount(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "_cat/shards/{0}".F(Encoded(index)); + var url = "_cat/count/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatShardsQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/shards/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Represents a GET on /_cat/count/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// ///A comma-separated list of index names to limit the returned information - public Task CatShardsAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatCountAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "_cat/shards/{0}".F(Encoded(index)); + var url = "_cat/count/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatShardsQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cat/thread_pool - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html
+ ///Represents a GET on /_cat/count/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - public ElasticsearchResponse CatThreadPool(Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatCount(string index, Func queryString = null) { - var url = "_cat/thread_pool"; + index.ThrowIfNullOrEmpty("index"); + var url = "_cat/count/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatThreadPoolQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cat/thread_pool - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html
+ ///Represents a GET on /_cat/count/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - public Task CatThreadPoolAsync(Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatCountAsync(string index, Func queryString = null) { - var url = "_cat/thread_pool"; + index.ThrowIfNullOrEmpty("index"); + var url = "_cat/count/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CatThreadPoolQueryString()); + var qs = queryString(new CatCountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///DELETE /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /_cat/health + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html /// - ///A comma-separated list of scroll IDs to clear - public ElasticsearchResponse ClearScroll(string scroll_id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatHealth(Func queryString = null, object deserializationState = null) { - scroll_id.ThrowIfNullOrEmpty("scroll_id"); - var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + var url = "_cat/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearScrollQueryString()); + var qs = queryString(new CatHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /_cat/health + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html /// - ///A comma-separated list of scroll IDs to clear - public Task ClearScrollAsync(string scroll_id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatHealthAsync(Func queryString = null, object deserializationState = null) { - scroll_id.ThrowIfNullOrEmpty("scroll_id"); - var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + var url = "_cat/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearScrollQueryString()); + var qs = queryString(new CatHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///Represents a GET on /_cat/health + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html /// - public ElasticsearchResponse ClusterGetSettings(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatHealth(Func queryString = null) { - var url = "_cluster/settings"; + var url = "_cat/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterGetSettingsQueryString()); + var qs = queryString(new CatHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///Represents a GET on /_cat/health + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html /// - public Task ClusterGetSettingsAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatHealthAsync(Func queryString = null) { - var url = "_cluster/settings"; + var url = "_cat/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterGetSettingsQueryString()); + var qs = queryString(new CatHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Represents a GET on /_cat + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html /// - public ElasticsearchResponse ClusterHealth(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatHelp(Func queryString = null, object deserializationState = null) { - var url = "_cluster/health"; + var url = "_cat"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterHealthQueryString()); + var qs = queryString(new CatHelpQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Represents a GET on /_cat + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html /// - public Task ClusterHealthAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatHelpAsync(Func queryString = null, object deserializationState = null) { - var url = "_cluster/health"; + var url = "_cat"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterHealthQueryString()); + var qs = queryString(new CatHelpQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/health/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Represents a GET on /_cat + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html /// - ///Limit the information returned to a specific index - public ElasticsearchResponse ClusterHealth(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatHelp(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "_cluster/health/{0}".F(Encoded(index)); + var url = "_cat"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterHealthQueryString()); + var qs = queryString(new CatHelpQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/health/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Represents a GET on /_cat + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html /// - ///Limit the information returned to a specific index - public Task ClusterHealthAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatHelpAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "_cluster/health/{0}".F(Encoded(index)); + var url = "_cat"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterHealthQueryString()); + var qs = queryString(new CatHelpQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html
+ ///Represents a GET on /_cat/indices + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - public ElasticsearchResponse ClusterPendingTasks(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatIndices(Func queryString = null, object deserializationState = null) { - var url = "_cluster/pending_tasks"; + var url = "_cat/indices"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterPendingTasksQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html
+ ///Represents a GET on /_cat/indices + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - public Task ClusterPendingTasksAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatIndicesAsync(Func queryString = null, object deserializationState = null) { - var url = "_cluster/pending_tasks"; + var url = "_cat/indices"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterPendingTasksQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///Represents a GET on /_cat/indices + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). - public ElasticsearchResponse ClusterPutSettings(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatIndices(Func queryString = null) { - var url = "_cluster/settings".F(); + var url = "_cat/indices"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterPutSettingsQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///PUT /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///Represents a GET on /_cat/indices + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). - public Task ClusterPutSettingsAsync(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatIndicesAsync(Func queryString = null) { - var url = "_cluster/settings".F(); + var url = "_cat/indices"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterPutSettingsQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /_cluster/reroute - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html
+ ///Represents a GET on /_cat/indices/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) - public ElasticsearchResponse ClusterReroute(object body, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatIndices(string index, Func queryString = null, object deserializationState = null) { - var url = "_cluster/reroute".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "_cat/indices/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterRerouteQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_cluster/reroute - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html
+ ///Represents a GET on /_cat/indices/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) - public Task ClusterRerouteAsync(object body, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatIndicesAsync(string index, Func queryString = null, object deserializationState = null) { - var url = "_cluster/reroute".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "_cat/indices/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterRerouteQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/state - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cat/indices/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - public ElasticsearchResponse ClusterState(Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatIndices(string index, Func queryString = null) { - var url = "_cluster/state"; + index.ThrowIfNullOrEmpty("index"); + var url = "_cat/indices/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStateQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/state - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cat/indices/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - public Task ClusterStateAsync(Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatIndicesAsync(string index, Func queryString = null) { - var url = "_cluster/state"; + index.ThrowIfNullOrEmpty("index"); + var url = "_cat/indices/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStateQueryString()); + var qs = queryString(new CatIndicesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/state/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cat/master + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html /// - ///Limit the information returned to the specified metrics - public ElasticsearchResponse ClusterState(string metric, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatMaster(Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_cluster/state/{0}".F(Encoded(metric)); + var url = "_cat/master"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStateQueryString()); + var qs = queryString(new CatMasterQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/state/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cat/master + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html /// - ///Limit the information returned to the specified metrics - public Task ClusterStateAsync(string metric, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatMasterAsync(Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_cluster/state/{0}".F(Encoded(metric)); + var url = "_cat/master"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStateQueryString()); + var qs = queryString(new CatMasterQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/state/{metric}/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cat/master + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html /// - ///Limit the information returned to the specified metrics - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse ClusterState(string metric, string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatMaster(Func queryString = null) { - metric.ThrowIfNullOrEmpty("metric"); - index.ThrowIfNullOrEmpty("index"); - var url = "_cluster/state/{0}/{1}".F(Encoded(metric), Encoded(index)); + var url = "_cat/master"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStateQueryString()); + var qs = queryString(new CatMasterQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/state/{metric}/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cat/master + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html /// - ///Limit the information returned to the specified metrics - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task ClusterStateAsync(string metric, string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatMasterAsync(Func queryString = null) { - metric.ThrowIfNullOrEmpty("metric"); - index.ThrowIfNullOrEmpty("index"); - var url = "_cluster/state/{0}/{1}".F(Encoded(metric), Encoded(index)); + var url = "_cat/master"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStateQueryString()); + var qs = queryString(new CatMasterQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ ///Represents a GET on /_cat/nodes + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html /// - public ElasticsearchResponse ClusterStats(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatNodes(Func queryString = null, object deserializationState = null) { - var url = "_cluster/stats"; + var url = "_cat/nodes"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStatsQueryString()); + var qs = queryString(new CatNodesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ ///Represents a GET on /_cat/nodes + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html /// - public Task ClusterStatsAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatNodesAsync(Func queryString = null, object deserializationState = null) { - var url = "_cluster/stats"; + var url = "_cat/nodes"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStatsQueryString()); + var qs = queryString(new CatNodesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/stats/nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ ///Represents a GET on /_cat/nodes + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public ElasticsearchResponse ClusterStats(string node_id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatNodes(Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cluster/stats/nodes/{0}".F(Encoded(node_id)); + var url = "_cat/nodes"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStatsQueryString()); + var qs = queryString(new CatNodesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/stats/nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ ///Represents a GET on /_cat/nodes + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public Task ClusterStatsAsync(string node_id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatNodesAsync(Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cluster/stats/nodes/{0}".F(Encoded(node_id)); + var url = "_cat/nodes"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClusterStatsQueryString()); + var qs = queryString(new CatNodesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html /// - ///A query to restrict the results specified with the Query DSL (optional) - public ElasticsearchResponse Count(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatPendingTasks(Func queryString = null, object deserializationState = null) { - var url = "_count".F(); + var url = "_cat/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/pending_tasks + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html /// - ///A query to restrict the results specified with the Query DSL (optional) - public Task CountAsync(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatPendingTasksAsync(Func queryString = null, object deserializationState = null) { - var url = "_count".F(); + var url = "_cat/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html /// - ///A comma-separated list of indices to restrict the results - ///A query to restrict the results specified with the Query DSL (optional) - public ElasticsearchResponse Count(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatPendingTasks(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_count".F(Encoded(index)); + var url = "_cat/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/pending_tasks + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html /// - ///A comma-separated list of indices to restrict the results - ///A query to restrict the results specified with the Query DSL (optional) - public Task CountAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatPendingTasksAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_count".F(Encoded(index)); + var url = "_cat/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - ///A comma-separated list of indices to restrict the results - ///A comma-separated list of types to restrict the results - ///A query to restrict the results specified with the Query DSL (optional) - public ElasticsearchResponse Count(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatRecovery(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); + var url = "_cat/recovery"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - ///A comma-separated list of indices to restrict the results - ///A comma-separated list of types to restrict the results - ///A query to restrict the results specified with the Query DSL (optional) - public Task CountAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatRecoveryAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); + var url = "_cat/recovery"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - public ElasticsearchResponse CountGet(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatRecovery(Func queryString = null) { - var url = "_count"; + var url = "_cat/recovery"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - public Task CountGetAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatRecoveryAsync(Func queryString = null) { - var url = "_count"; + var url = "_cat/recovery"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - ///A comma-separated list of indices to restrict the results - public ElasticsearchResponse CountGet(string index, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatRecovery(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_count".F(Encoded(index)); + var url = "_cat/recovery/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - ///A comma-separated list of indices to restrict the results - public Task CountGetAsync(string index, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatRecoveryAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_count".F(Encoded(index)); + var url = "_cat/recovery/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - ///A comma-separated list of indices to restrict the results - ///A comma-separated list of types to restrict the results - public ElasticsearchResponse CountGet(string index, string type, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatRecovery(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); + var url = "_cat/recovery/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /_cat/recovery/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - ///A comma-separated list of indices to restrict the results - ///A comma-separated list of types to restrict the results - public Task CountGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatRecoveryAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); + var url = "_cat/recovery/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountQueryString()); + var qs = queryString(new CatRecoveryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - public ElasticsearchResponse CountPercolateGet(string index, string type, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatShards(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); + var url = "_cat/shards"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - public Task CountPercolateGetAsync(string index, string type, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatShardsAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); + var url = "_cat/shards"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - public ElasticsearchResponse CountPercolateGet(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatShards(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cat/shards"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - public Task CountPercolateGetAsync(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatShardsAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cat/shards"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - ///The count percolator request definition using the percolate DSL - public ElasticsearchResponse CountPercolate(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatShards(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); + var url = "_cat/shards/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - ///The count percolator request definition using the percolate DSL - public Task CountPercolateAsync(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatShardsAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); + var url = "_cat/shards/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - ///The count percolator request definition using the percolate DSL - public ElasticsearchResponse CountPercolate(string index, string type, string id, object body, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatShards(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cat/shards/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_cat/shards/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - ///The index of the document being count percolated. - ///The type of the document being count percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - ///The count percolator request definition using the percolate DSL - public Task CountPercolateAsync(string index, string type, string id, object body, Func queryString = null) + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatShardsAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cat/shards/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CountPercolateQueryString()); + var qs = queryString(new CatShardsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///DELETE /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html
+ ///Represents a GET on /_cat/thread_pool + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html /// - ///The name of the index - ///The type of the document - ///The document ID - public ElasticsearchResponse Delete(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CatThreadPool(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cat/thread_pool"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteQueryString()); + var qs = queryString(new CatThreadPoolQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html
+ ///Represents a GET on /_cat/thread_pool + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html /// - ///The name of the index - ///The type of the document - ///The document ID - public Task DeleteAsync(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CatThreadPoolAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cat/thread_pool"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteQueryString()); + var qs = queryString(new CatThreadPoolQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ///Represents a GET on /_cat/thread_pool + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html /// - ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices - ///A query to restrict the operation specified with the Query DSL - public ElasticsearchResponse DeleteByQuery(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CatThreadPool(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_query".F(Encoded(index)); + var url = "_cat/thread_pool"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteByQueryQueryString()); + var qs = queryString(new CatThreadPoolQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///DELETE /{index}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ///Represents a GET on /_cat/thread_pool + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html /// - ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices - ///A query to restrict the operation specified with the Query DSL - public Task DeleteByQueryAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CatThreadPoolAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_query".F(Encoded(index)); + var url = "_cat/thread_pool"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteByQueryQueryString()); + var qs = queryString(new CatThreadPoolQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///DELETE /{index}/{type}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices - ///A comma-separated list of types to restrict the operation - ///A query to restrict the operation specified with the Query DSL - public ElasticsearchResponse DeleteByQuery(string index, string type, object body, Func queryString = null) + ///A comma-separated list of scroll IDs to clear + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClearScroll(string scroll_id, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_query".F(Encoded(index), Encoded(type)); + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteByQueryQueryString()); + var qs = queryString(new ClearScrollQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, body, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index}/{type}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices - ///A comma-separated list of types to restrict the operation - ///A query to restrict the operation specified with the Query DSL - public Task DeleteByQueryAsync(string index, string type, object body, Func queryString = null) + ///A comma-separated list of scroll IDs to clear + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClearScrollAsync(string scroll_id, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_query".F(Encoded(index), Encoded(type)); + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteByQueryQueryString()); + var qs = queryString(new ClearScrollQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, body, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - public ElasticsearchResponse Exists(string index, string type, string id, Func queryString = null) + ///A comma-separated list of scroll IDs to clear + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClearScroll(string scroll_id, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ExistsQueryString()); + var qs = queryString(new ClearScrollQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///HEAD /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - public Task ExistsAsync(string index, string type, string id, Func queryString = null) + ///A comma-separated list of scroll IDs to clear + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClearScrollAsync(string scroll_id, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ExistsQueryString()); + var qs = queryString(new ClearScrollQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ///Represents a GET on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ///The name of the index - ///The type of the document - ///The document ID - public ElasticsearchResponse ExplainGet(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterGetSettings(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ExplainQueryString()); + var qs = queryString(new ClusterGetSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ///Represents a GET on /_cluster/settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ///The name of the index - ///The type of the document - ///The document ID - public Task ExplainGetAsync(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterGetSettingsAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ExplainQueryString()); + var qs = queryString(new ClusterGetSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ///Represents a GET on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ///The name of the index - ///The type of the document - ///The document ID - ///The query definition using the Query DSL - public ElasticsearchResponse Explain(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterGetSettings(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ExplainQueryString()); + var qs = queryString(new ClusterGetSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ///Represents a GET on /_cluster/settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ///The name of the index - ///The type of the document - ///The document ID - ///The query definition using the Query DSL - public Task ExplainAsync(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterGetSettingsAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ExplainQueryString()); + var qs = queryString(new ClusterGetSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a GET on /_cluster/health + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - public ElasticsearchResponse Get(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterHealth(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a GET on /_cluster/health + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - public Task GetAsync(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterHealthAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id}/_source - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a GET on /_cluster/health + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document; use `_all` to fetch the first document matching the ID across all types - ///The document ID - public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterHealth(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_source".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetSourceQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id}/_source - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a GET on /_cluster/health + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document; use `_all` to fetch the first document matching the ID across all types - ///The document ID - public Task GetSourceAsync(string index, string type, string id, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterHealthAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_source".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/health"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetSourceQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/health/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document - ///The document - public ElasticsearchResponse Index(string index, string type, object body, Func queryString = null) + ///Limit the information returned to a specific index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterHealth(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}".F(Encoded(index), Encoded(type)); + var url = "_cluster/health/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/health/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document - ///The document - public Task IndexAsync(string index, string type, object body, Func queryString = null) + ///Limit the information returned to a specific index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterHealthAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}".F(Encoded(index), Encoded(type)); + var url = "_cluster/health/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/health/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document - ///Document ID - ///The document - public ElasticsearchResponse Index(string index, string type, string id, object body, Func queryString = null) + ///Limit the information returned to a specific index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterHealth(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/health/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/health/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - ///The name of the index - ///The type of the document - ///Document ID - ///The document - public Task IndexAsync(string index, string type, string id, object body, Func queryString = null) + ///Limit the information returned to a specific index + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterHealthAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/health/{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterHealthQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///PUT /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html /// - ///The name of the index - ///The type of the document - ///The document - public ElasticsearchResponse IndexPut(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterPendingTasks(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}".F(Encoded(index), Encoded(type)); + var url = "_cluster/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/pending_tasks + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html /// - ///The name of the index - ///The type of the document - ///The document - public Task IndexPutAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterPendingTasksAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}".F(Encoded(index), Encoded(type)); + var url = "_cluster/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html /// - ///The name of the index - ///The type of the document - ///Document ID - ///The document - public ElasticsearchResponse IndexPut(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterPendingTasks(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///PUT /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a GET on /_cluster/pending_tasks + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html /// - ///The name of the index - ///The type of the document - ///Document ID - ///The document - public Task IndexPutAsync(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterPendingTasksAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_cluster/pending_tasks"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexQueryString()); + var qs = queryString(new ClusterPendingTasksQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a PUT on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - public ElasticsearchResponse IndicesAnalyzeGetForAll(Func queryString = null) + ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterPutSettings(object body, Func queryString = null, object deserializationState = null) { - var url = "_analyze"; + var url = "_cluster/settings".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterPutSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a PUT on /_cluster/settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - public Task IndicesAnalyzeGetForAllAsync(Func queryString = null) + ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterPutSettingsAsync(object body, Func queryString = null, object deserializationState = null) { - var url = "_analyze"; + var url = "_cluster/settings".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterPutSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a PUT on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ///The name of the index to scope the operation - public ElasticsearchResponse IndicesAnalyzeGet(string index, Func queryString = null) + ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterPutSettings(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_analyze".F(Encoded(index)); + var url = "_cluster/settings".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterPutSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///GET /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a PUT on /_cluster/settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ///The name of the index to scope the operation - public Task IndicesAnalyzeGetAsync(string index, Func queryString = null) + ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterPutSettingsAsync(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_analyze".F(Encoded(index)); + var url = "_cluster/settings".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterPutSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///POST /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a POST on /_cluster/reroute + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// - ///The text on which the analysis should be performed - public ElasticsearchResponse IndicesAnalyzeForAll(object body, Func queryString = null) + ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterReroute(object body, Func queryString = null, object deserializationState = null) { - var url = "_analyze".F(); + var url = "_cluster/reroute".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterRerouteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a POST on /_cluster/reroute + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// - ///The text on which the analysis should be performed - public Task IndicesAnalyzeForAllAsync(object body, Func queryString = null) + ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterRerouteAsync(object body, Func queryString = null, object deserializationState = null) { - var url = "_analyze".F(); + var url = "_cluster/reroute".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterRerouteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a POST on /_cluster/reroute + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// - ///The name of the index to scope the operation - ///The text on which the analysis should be performed - public ElasticsearchResponse IndicesAnalyze(string index, object body, Func queryString = null) + ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterReroute(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_analyze".F(Encoded(index)); + var url = "_cluster/reroute".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterRerouteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///POST /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a POST on /_cluster/reroute + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// - ///The name of the index to scope the operation - ///The text on which the analysis should be performed - public Task IndicesAnalyzeAsync(string index, object body, Func queryString = null) + ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterRerouteAsync(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_analyze".F(Encoded(index)); + var url = "_cluster/reroute".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AnalyzeQueryString()); + var qs = queryString(new ClusterRerouteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///POST /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - public ElasticsearchResponse IndicesClearCacheForAll(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterState(Func queryString = null, object deserializationState = null) { - var url = "_cache/clear"; + var url = "_cluster/state"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - public Task IndicesClearCacheForAllAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterStateAsync(Func queryString = null, object deserializationState = null) { - var url = "_cache/clear"; + var url = "_cluster/state"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///A comma-separated list of index name to limit the operation - public ElasticsearchResponse IndicesClearCache(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterState(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_cache/clear".F(Encoded(index)); + var url = "_cluster/state"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///A comma-separated list of index name to limit the operation - public Task IndicesClearCacheAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterStateAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_cache/clear".F(Encoded(index)); + var url = "_cluster/state"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - public ElasticsearchResponse IndicesClearCacheGetForAll(Func queryString = null) + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterState(string metric, Func queryString = null, object deserializationState = null) { - var url = "_cache/clear"; + metric.ThrowIfNullOrEmpty("metric"); + var url = "_cluster/state/{0}".F(Encoded(metric)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - public Task IndicesClearCacheGetForAllAsync(Func queryString = null) + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterStateAsync(string metric, Func queryString = null, object deserializationState = null) { - var url = "_cache/clear"; + metric.ThrowIfNullOrEmpty("metric"); + var url = "_cluster/state/{0}".F(Encoded(metric)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///A comma-separated list of index name to limit the operation - public ElasticsearchResponse IndicesClearCacheGet(string index, Func queryString = null) + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterState(string metric, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_cache/clear".F(Encoded(index)); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_cluster/state/{0}".F(Encoded(metric)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /_cluster/state/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///A comma-separated list of index name to limit the operation - public Task IndicesClearCacheGetAsync(string index, Func queryString = null) + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterStateAsync(string metric, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_cache/clear".F(Encoded(index)); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_cluster/state/{0}".F(Encoded(metric)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ClearCacheQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_close - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///The name of the index - public ElasticsearchResponse IndicesClose(string index, Func queryString = null) + ///Limit the information returned to the specified metrics + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterState(string metric, string index, Func queryString = null, object deserializationState = null) { + metric.ThrowIfNullOrEmpty("metric"); index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_close".F(Encoded(index)); + var url = "_cluster/state/{0}/{1}".F(Encoded(metric), Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CloseIndexQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_close - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///The name of the index - public Task IndicesCloseAsync(string index, Func queryString = null) + ///Limit the information returned to the specified metrics + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterStateAsync(string metric, string index, Func queryString = null, object deserializationState = null) { + metric.ThrowIfNullOrEmpty("metric"); index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_close".F(Encoded(index)); + var url = "_cluster/state/{0}/{1}".F(Encoded(metric), Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CloseIndexQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///The name of the index - ///The configuration for the index (`settings` and `mappings`) - public ElasticsearchResponse IndicesCreate(string index, object body, Func queryString = null) + ///Limit the information returned to the specified metrics + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterState(string metric, string index, Func queryString = null) { + metric.ThrowIfNullOrEmpty("metric"); index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "_cluster/state/{0}/{1}".F(Encoded(metric), Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CreateIndexQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///PUT /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// - ///The name of the index - ///The configuration for the index (`settings` and `mappings`) - public Task IndicesCreateAsync(string index, object body, Func queryString = null) + ///Limit the information returned to the specified metrics + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterStateAsync(string metric, string index, Func queryString = null) { + metric.ThrowIfNullOrEmpty("metric"); index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "_cluster/state/{0}/{1}".F(Encoded(metric), Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CreateIndexQueryString()); + var qs = queryString(new ClusterStateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a GET on /_cluster/stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///The name of the index - ///The configuration for the index (`settings` and `mappings`) - public ElasticsearchResponse IndicesCreatePost(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterStats(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "_cluster/stats"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CreateIndexQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a GET on /_cluster/stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///The name of the index - ///The configuration for the index (`settings` and `mappings`) - public Task IndicesCreatePostAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterStatsAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "_cluster/stats"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new CreateIndexQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html
+ ///Represents a GET on /_cluster/stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices - public ElasticsearchResponse IndicesDelete(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterStats(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "_cluster/stats"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteIndexQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///DELETE /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html
+ ///Represents a GET on /_cluster/stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices - public Task IndicesDeleteAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterStatsAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "_cluster/stats"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteIndexQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///DELETE /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///A comma-separated list of index names (supports wildcards); use `_all` for all indices - ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. - public ElasticsearchResponse IndicesDeleteAlias(string index, string name, Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ClusterStats(string node_id, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/stats/nodes/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesDeleteAliasQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///A comma-separated list of index names (supports wildcards); use `_all` for all indices - ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. - public Task IndicesDeleteAliasAsync(string index, string name, Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ClusterStatsAsync(string node_id, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/stats/nodes/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesDeleteAliasQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html
+ ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///A comma-separated list of index names (supports wildcards); use `_all` for all indices - ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. - public ElasticsearchResponse IndicesDeleteMapping(string index, string type, Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ClusterStats(string node_id, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/stats/nodes/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteMappingQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///DELETE /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html
+ ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - ///A comma-separated list of index names (supports wildcards); use `_all` for all indices - ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. - public Task IndicesDeleteMappingAsync(string index, string type, Func queryString = null) + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ClusterStatsAsync(string node_id, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/stats/nodes/{0}".F(Encoded(node_id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteMappingQueryString()); + var qs = queryString(new ClusterStatsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///DELETE /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///The name of the template - public ElasticsearchResponse IndicesDeleteTemplateForAll(string name, Func queryString = null) + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Count(object body, Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + var url = "_count".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteTemplateQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///The name of the template - public Task IndicesDeleteTemplateForAllAsync(string name, Func queryString = null) + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountAsync(object body, Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + var url = "_count".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteTemplateQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. - ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. - public ElasticsearchResponse IndicesDeleteWarmer(string index, string name, Func queryString = null) + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Count(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + var url = "_count".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteWarmerQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///DELETE /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. - ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. - public Task IndicesDeleteWarmerAsync(string index, string name, Func queryString = null) + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountAsync(object body, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + var url = "_count".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new DeleteWarmerQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///HEAD /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html
+ ///Represents a POST on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of indices to check - public ElasticsearchResponse IndicesExists(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Count(string index, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexExistsQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html
+ ///Represents a POST on /{index}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of indices to check - public Task IndicesExistsAsync(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountAsync(string index, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}".F(Encoded(index)); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndexExistsQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of alias names to return - public ElasticsearchResponse IndicesExistsAliasForAll(string name, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Count(string index, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsAliasQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///HEAD /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of alias names to return - public Task IndicesExistsAliasForAllAsync(string name, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountAsync(string index, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsAliasQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///HEAD /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to return - public ElasticsearchResponse IndicesExistsAlias(string index, string name, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Count(string index, string type, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsAliasQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to return - public Task IndicesExistsAliasAsync(string index, string name, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsAliasQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names to filter aliases - public ElasticsearchResponse IndicesExistsAlias(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Count(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_alias".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsAliasQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///HEAD /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names to filter aliases - public Task IndicesExistsAliasAsync(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountAsync(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_alias".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsAliasQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///HEAD /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///The name of the template - public ElasticsearchResponse IndicesExistsTemplateForAll(string name, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountGet(Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + var url = "_count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsTemplateQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///The name of the template - public Task IndicesExistsTemplateForAllAsync(string name, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountGetAsync(Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + var url = "_count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsTemplateQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html
+ ///Represents a GET on /_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names; use `_all` to check the types across all indices - ///A comma-separated list of document types to check - public ElasticsearchResponse IndicesExistsType(string index, string type, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountGet(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}".F(Encoded(index), Encoded(type)); + var url = "_count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsTypeQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///HEAD /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html
+ ///Represents a GET on /_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names; use `_all` to check the types across all indices - ///A comma-separated list of document types to check - public Task IndicesExistsTypeAsync(string index, string type, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountGetAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}".F(Encoded(index), Encoded(type)); + var url = "_count"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesExistsTypeQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - public ElasticsearchResponse IndicesFlushForAll(Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountGet(string index, Func queryString = null, object deserializationState = null) { - var url = "_flush"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - public Task IndicesFlushForAllAsync(Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountGetAsync(string index, Func queryString = null, object deserializationState = null) { - var url = "_flush"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names; use `_all` or empty string for all indices - public ElasticsearchResponse IndicesFlush(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountGet(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_flush".F(Encoded(index)); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names; use `_all` or empty string for all indices - public Task IndicesFlushAsync(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountGetAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_flush".F(Encoded(index)); + var url = "{0}/_count".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - public ElasticsearchResponse IndicesFlushGetForAll(Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountGet(string index, string type, Func queryString = null, object deserializationState = null) { - var url = "_flush"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/{type}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - public Task IndicesFlushGetForAllAsync(Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountGetAsync(string index, string type, Func queryString = null, object deserializationState = null) { - var url = "_flush"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names; use `_all` or empty string for all indices - public ElasticsearchResponse IndicesFlushGet(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountGet(string index, string type, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_flush".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/{type}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ///A comma-separated list of index names; use `_all` or empty string for all indices - public Task IndicesFlushGetAsync(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountGetAsync(string index, string type, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_flush".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new FlushQueryString()); + var qs = queryString(new CountQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - public ElasticsearchResponse IndicesGetAliasForAll(Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountPercolateGet(string index, string type, Func queryString = null, object deserializationState = null) { - var url = "_alias"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - public Task IndicesGetAliasForAllAsync(Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountPercolateGetAsync(string index, string type, Func queryString = null, object deserializationState = null) { - var url = "_alias"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of alias names to return - public ElasticsearchResponse IndicesGetAliasForAll(string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountPercolateGet(string index, string type, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of alias names to return - public Task IndicesGetAliasForAllAsync(string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountPercolateGetAsync(string index, string type, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to return - public ElasticsearchResponse IndicesGetAlias(string index, string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountPercolateGet(string index, string type, string id, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to return - public Task IndicesGetAliasAsync(string index, string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountPercolateGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - public ElasticsearchResponse IndicesGetAlias(string index, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountPercolateGet(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_alias".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - public Task IndicesGetAliasAsync(string index, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountPercolateGetAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_alias".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - public ElasticsearchResponse IndicesGetAliasesForAll(Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountPercolate(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_aliases"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - public Task IndicesGetAliasesForAllAsync(Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountPercolateAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_aliases"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - public ElasticsearchResponse IndicesGetAliases(string index, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountPercolate(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_aliases".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///GET /{index}/_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - public Task IndicesGetAliasesAsync(string index, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountPercolateAsync(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_aliases".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate/count".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /{index}/_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to filter - public ElasticsearchResponse IndicesGetAliases(string index, string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse CountPercolate(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_aliases/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to filter - public Task IndicesGetAliasesAsync(string index, string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> CountPercolateAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_aliases/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of alias names to filter - public ElasticsearchResponse IndicesGetAliasesForAll(string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse CountPercolate(string index, string type, string id, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_aliases/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///GET /_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of alias names to filter - public Task IndicesGetAliasesForAllAsync(string name, Func queryString = null) + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> CountPercolateAsync(string index, string type, string id, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_aliases/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate/count".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetAliasesQueryString()); + var qs = queryString(new CountPercolateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html /// - ///A comma-separated list of fields - public ElasticsearchResponse IndicesGetFieldMappingForAll(string field, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Delete(string index, string type, string id, Func queryString = null, object deserializationState = null) { - field.ThrowIfNullOrEmpty("field"); - var url = "_mapping/field/{0}".F(Encoded(field)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html /// - ///A comma-separated list of fields - public Task IndicesGetFieldMappingForAllAsync(string field, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> DeleteAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { - field.ThrowIfNullOrEmpty("field"); - var url = "_mapping/field/{0}".F(Encoded(field)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html /// - ///A comma-separated list of index names - ///A comma-separated list of fields - public ElasticsearchResponse IndicesGetFieldMapping(string index, string field, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Delete(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - field.ThrowIfNullOrEmpty("field"); - var url = "{0}/_mapping/field/{1}".F(Encoded(index), Encoded(field)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///GET /{index}/_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html /// - ///A comma-separated list of index names - ///A comma-separated list of fields - public Task IndicesGetFieldMappingAsync(string index, string field, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> DeleteAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - field.ThrowIfNullOrEmpty("field"); - var url = "{0}/_mapping/field/{1}".F(Encoded(index), Encoded(field)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///GET /_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/_query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///A comma-separated list of document types - ///A comma-separated list of fields - public ElasticsearchResponse IndicesGetFieldMappingForAll(string type, string field, Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse DeleteByQuery(string index, object body, Func queryString = null, object deserializationState = null) { - type.ThrowIfNullOrEmpty("type"); - field.ThrowIfNullOrEmpty("field"); - var url = "_mapping/{0}/field/{1}".F(Encoded(type), Encoded(field)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_query".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/_query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///A comma-separated list of document types - ///A comma-separated list of fields - public Task IndicesGetFieldMappingForAllAsync(string type, string field, Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> DeleteByQueryAsync(string index, object body, Func queryString = null, object deserializationState = null) { - type.ThrowIfNullOrEmpty("type"); - field.ThrowIfNullOrEmpty("field"); - var url = "_mapping/{0}/field/{1}".F(Encoded(type), Encoded(field)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_query".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/_query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///A comma-separated list of index names - ///A comma-separated list of document types - ///A comma-separated list of fields - public ElasticsearchResponse IndicesGetFieldMapping(string index, string type, string field, Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse DeleteByQuery(string index, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - field.ThrowIfNullOrEmpty("field"); - var url = "{0}/_mapping/{1}/field/{2}".F(Encoded(index), Encoded(type), Encoded(field)); + var url = "{0}/_query".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, body, + queryString: nv + ); } - ///GET /{index}/_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a DELETE on /{index}/_query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///A comma-separated list of index names - ///A comma-separated list of document types - ///A comma-separated list of fields - public Task IndicesGetFieldMappingAsync(string index, string type, string field, Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> DeleteByQueryAsync(string index, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - field.ThrowIfNullOrEmpty("field"); - var url = "{0}/_mapping/{1}/field/{2}".F(Encoded(index), Encoded(type), Encoded(field)); + var url = "{0}/_query".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesGetFieldMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, body, + queryString: nv + ); } - ///GET /_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a DELETE on /{index}/{type}/_query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - public ElasticsearchResponse IndicesGetMappingForAll(Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse DeleteByQuery(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_mapping"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_query".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a DELETE on /{index}/{type}/_query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - public Task IndicesGetMappingForAllAsync(Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> DeleteByQueryAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_mapping"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_query".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a DELETE on /{index}/{type}/_query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///A comma-separated list of index names - public ElasticsearchResponse IndicesGetMapping(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse DeleteByQuery(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mapping".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_query".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, body, + queryString: nv + ); } - ///GET /{index}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a DELETE on /{index}/{type}/_query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///A comma-separated list of index names - public Task IndicesGetMappingAsync(string index, Func queryString = null) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> DeleteByQueryAsync(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mapping".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_query".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new DeleteByQueryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, body, + queryString: nv + ); } - ///GET /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///A comma-separated list of document types - public ElasticsearchResponse IndicesGetMappingForAll(string type, Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Exists(string index, string type, string id, Func queryString = null, object deserializationState = null) { + index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "_mapping/{0}".F(Encoded(type)); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new ExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///A comma-separated list of document types - public Task IndicesGetMappingForAllAsync(string type, Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ExistsAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { + index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "_mapping/{0}".F(Encoded(type)); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new ExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///A comma-separated list of index names - ///A comma-separated list of document types - public ElasticsearchResponse IndicesGetMapping(string index, string type, Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Exists(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/_mapping/{1}".F(Encoded(index), Encoded(type)); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new ExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///GET /{index}/_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///A comma-separated list of index names - ///A comma-separated list of document types - public Task IndicesGetMappingAsync(string index, string type, Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ExistsAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/_mapping/{1}".F(Encoded(index), Encoded(type)); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetMappingQueryString()); + var qs = queryString(new ExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///GET /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - public ElasticsearchResponse IndicesGetSettingsForAll(Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ExplainGet(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_settings"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - public Task IndicesGetSettingsForAllAsync(Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ExplainGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_settings"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesGetSettings(string index, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ExplainGet(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_settings".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesGetSettingsAsync(string index, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ExplainGetAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_settings".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///The name of the settings that should be included - public ElasticsearchResponse IndicesGetSettings(string index, string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///The query definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Explain(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_settings/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///The name of the settings that should be included - public Task IndicesGetSettingsAsync(string index, string name, Func queryString = null) - { + ///The name of the index + ///The type of the document + ///The document ID + ///The query definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ExplainAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_settings/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - ///The name of the settings that should be included - public ElasticsearchResponse IndicesGetSettingsForAll(string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///The query definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Explain(string index, string type, string id, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_settings/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///GET /_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// - ///The name of the settings that should be included - public Task IndicesGetSettingsForAllAsync(string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document ID + ///The query definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ExplainAsync(string index, string type, string id, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_settings/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_explain".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetIndexSettingsQueryString()); + var qs = queryString(new ExplainQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /_template - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - public ElasticsearchResponse IndicesGetTemplateForAll(Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Get(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_template"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetTemplateQueryString()); + var qs = queryString(new GetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_template - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - public Task IndicesGetTemplateForAllAsync(Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> GetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_template"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetTemplateQueryString()); + var qs = queryString(new GetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///The name of the template - public ElasticsearchResponse IndicesGetTemplateForAll(string name, Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Get(string index, string type, string id, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetTemplateQueryString()); + var qs = queryString(new GetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///The name of the template - public Task IndicesGetTemplateForAllAsync(string name, Func queryString = null) + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> GetAsync(string index, string type, string id, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetTemplateQueryString()); + var qs = queryString(new GetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - public ElasticsearchResponse IndicesGetWarmerForAll(Func queryString = null) + ///The name of the index + ///The type of the document; use `_all` to fetch the first document matching the ID across all types + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_warmer"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_source".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new GetSourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - public Task IndicesGetWarmerForAllAsync(Func queryString = null) + ///The name of the index + ///The type of the document; use `_all` to fetch the first document matching the ID across all types + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> GetSourceAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_warmer"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_source".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new GetSourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - public ElasticsearchResponse IndicesGetWarmer(string index, Func queryString = null) + ///The name of the index + ///The type of the document; use `_all` to fetch the first document matching the ID across all types + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_warmer".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_source".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new GetSourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - public Task IndicesGetWarmerAsync(string index, Func queryString = null) + ///The name of the index + ///The type of the document; use `_all` to fetch the first document matching the ID across all types + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> GetSourceAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_warmer".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_source".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new GetSourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - ///The name of the warmer (supports wildcards); leave empty to get all warmers - public ElasticsearchResponse IndicesGetWarmer(string index, string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Index(string index, string type, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - ///The name of the warmer (supports wildcards); leave empty to get all warmers - public Task IndicesGetWarmerAsync(string index, string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndexAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///The name of the warmer (supports wildcards); leave empty to get all warmers - public ElasticsearchResponse IndicesGetWarmerForAll(string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Index(string index, string type, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_warmer/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///GET /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///The name of the warmer (supports wildcards); leave empty to get all warmers - public Task IndicesGetWarmerForAllAsync(string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndexAsync(string index, string type, object body, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_warmer/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - ///The name of the warmer (supports wildcards); leave empty to get all warmers - public ElasticsearchResponse IndicesGetWarmer(string index, string type, string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Index(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - ///The name of the warmer (supports wildcards); leave empty to get all warmers - public Task IndicesGetWarmerAsync(string index, string type, string name, Func queryString = null) + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndexAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetWarmerQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_open - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ ///Represents a POST on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index - public ElasticsearchResponse IndicesOpen(string index, Func queryString = null) + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Index(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_open".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OpenIndexQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///POST /{index}/_open - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ ///Represents a POST on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index - public Task IndicesOpenAsync(string index, Func queryString = null) + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndexAsync(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_open".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OpenIndexQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///POST /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - public ElasticsearchResponse IndicesOptimizeForAll(Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndexPut(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_optimize"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - public Task IndicesOptimizeForAllAsync(Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndexPutAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) { - var url = "_optimize"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesOptimize(string index, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndexPut(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_optimize".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///POST /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesOptimizeAsync(string index, Func queryString = null) + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndexPutAsync(string index, string type, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_optimize".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///GET /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - public ElasticsearchResponse IndicesOptimizeGetForAll(Func queryString = null) + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndexPut(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { - var url = "_optimize"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - public Task IndicesOptimizeGetForAllAsync(Func queryString = null) + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndexPutAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { - var url = "_optimize"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesOptimizeGet(string index, Func queryString = null) + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndexPut(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_optimize".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///GET /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a PUT on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesOptimizeGetAsync(string index, Func queryString = null) + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndexPutAsync(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_optimize".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new OptimizeQueryString()); + var qs = queryString(new IndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///PUT /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public ElasticsearchResponse IndicesPutAlias(string index, string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesAnalyzeGetForAll(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + var url = "_analyze"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public Task IndicesPutAliasAsync(string index, string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesAnalyzeGetForAllAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + var url = "_analyze"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public ElasticsearchResponse IndicesPutAliasForAll(string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesAnalyzeGetForAll(Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + var url = "_analyze"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///PUT /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public Task IndicesPutAliasForAllAsync(string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesAnalyzeGetForAllAsync(Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + var url = "_analyze"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public ElasticsearchResponse IndicesPutAliasPost(string index, string name, object body, Func queryString = null) + ///The name of the index to scope the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesAnalyzeGet(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public Task IndicesPutAliasPostAsync(string index, string name, object body, Func queryString = null) + ///The name of the index to scope the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesAnalyzeGetAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public ElasticsearchResponse IndicesPutAliasPostForAll(string name, object body, Func queryString = null) + ///The name of the index to scope the operation + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesAnalyzeGet(string index, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the alias to be created or updated - ///The settings for the alias, such as `routing` or `filter` - public Task IndicesPutAliasPostForAllAsync(string name, object body, Func queryString = null) + ///The name of the index to scope the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesAnalyzeGetAsync(string index, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_alias/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesPutAliasQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///PUT /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. - ///The name of the document type - ///The mapping definition - public ElasticsearchResponse IndicesPutMapping(string index, string type, object body, Func queryString = null) + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesAnalyzeForAll(object body, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + var url = "_analyze".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. - ///The name of the document type - ///The mapping definition - public Task IndicesPutMappingAsync(string index, string type, object body, Func queryString = null) + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesAnalyzeForAllAsync(object body, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + var url = "_analyze".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the document type - ///The mapping definition - public ElasticsearchResponse IndicesPutMappingForAll(string type, object body, Func queryString = null) + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesAnalyzeForAll(object body, Func queryString = null) { - type.ThrowIfNullOrEmpty("type"); - var url = "_mapping/{0}".F(Encoded(type)); + var url = "_analyze".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///PUT /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the document type - ///The mapping definition - public Task IndicesPutMappingForAllAsync(string type, object body, Func queryString = null) + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesAnalyzeForAllAsync(object body, Func queryString = null) { - type.ThrowIfNullOrEmpty("type"); - var url = "_mapping/{0}".F(Encoded(type)); + var url = "_analyze".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///POST /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. - ///The name of the document type - ///The mapping definition - public ElasticsearchResponse IndicesPutMappingPost(string index, string type, object body, Func queryString = null) + ///The name of the index to scope the operation + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesAnalyze(string index, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /{index}/_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. - ///The name of the document type - ///The mapping definition - public Task IndicesPutMappingPostAsync(string index, string type, object body, Func queryString = null) + ///The name of the index to scope the operation + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesAnalyzeAsync(string index, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the document type - ///The mapping definition - public ElasticsearchResponse IndicesPutMappingPostForAll(string type, object body, Func queryString = null) + ///The name of the index to scope the operation + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesAnalyze(string index, object body, Func queryString = null) { - type.ThrowIfNullOrEmpty("type"); - var url = "_mapping/{0}".F(Encoded(type)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///POST /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /{index}/_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ///The name of the document type - ///The mapping definition - public Task IndicesPutMappingPostForAllAsync(string type, object body, Func queryString = null) + ///The name of the index to scope the operation + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesAnalyzeAsync(string index, object body, Func queryString = null) { - type.ThrowIfNullOrEmpty("type"); - var url = "_mapping/{0}".F(Encoded(type)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_analyze".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutMappingQueryString()); + var qs = queryString(new AnalyzeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///PUT /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ ///Represents a POST on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The index settings to be updated - public ElasticsearchResponse IndicesPutSettingsForAll(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesClearCacheForAll(Func queryString = null, object deserializationState = null) { - var url = "_settings".F(); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new UpdateSettingsQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ ///Represents a POST on /_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The index settings to be updated - public Task IndicesPutSettingsForAllAsync(object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesClearCacheForAllAsync(Func queryString = null, object deserializationState = null) { - var url = "_settings".F(); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new UpdateSettingsQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ ///Represents a POST on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///The index settings to be updated - public ElasticsearchResponse IndicesPutSettings(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesClearCacheForAll(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_settings".F(Encoded(index)); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new UpdateSettingsQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + ); } - ///PUT /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ ///Represents a POST on /_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///The index settings to be updated - public Task IndicesPutSettingsAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesClearCacheForAllAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_settings".F(Encoded(index)); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new UpdateSettingsQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); } - ///PUT /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the template - ///The template definition - public ElasticsearchResponse IndicesPutTemplateForAll(string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesClearCache(string index, Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutTemplateQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /{index}/_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the template - ///The template definition - public Task IndicesPutTemplateForAllAsync(string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesClearCacheAsync(string index, Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutTemplateQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the template - ///The template definition - public ElasticsearchResponse IndicesPutTemplatePostForAll(string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesClearCache(string index, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutTemplateQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + ); } - ///POST /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /{index}/_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the template - ///The template definition - public Task IndicesPutTemplatePostForAllAsync(string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesClearCacheAsync(string index, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_template/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutTemplateQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); } - ///PUT /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public ElasticsearchResponse IndicesPutWarmerForAll(string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesClearCacheGetForAll(Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_warmer/{0}".F(Encoded(name)); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public Task IndicesPutWarmerForAllAsync(string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesClearCacheGetForAllAsync(Func queryString = null, object deserializationState = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_warmer/{0}".F(Encoded(name)); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public ElasticsearchResponse IndicesPutWarmer(string index, string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesClearCacheGetForAll(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///PUT /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public Task IndicesPutWarmerAsync(string index, string name, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesClearCacheGetForAllAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + var url = "_cache/clear"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///PUT /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public ElasticsearchResponse IndicesPutWarmer(string index, string type, string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesClearCacheGet(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public Task IndicesPutWarmerAsync(string index, string type, string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesClearCacheGetAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public ElasticsearchResponse IndicesPutWarmerPostForAll(string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesClearCacheGet(string index, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_warmer/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public Task IndicesPutWarmerPostForAllAsync(string name, object body, Func queryString = null) + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesClearCacheGetAsync(string index, Func queryString = null) { - name.ThrowIfNullOrEmpty("name"); - var url = "_warmer/{0}".F(Encoded(name)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_cache/clear".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new ClearCacheQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/_close + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public ElasticsearchResponse IndicesPutWarmerPost(string index, string name, object body, Func queryString = null) + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesClose(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + var url = "{0}/_close".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new CloseIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/_close + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public Task IndicesPutWarmerPostAsync(string index, string name, object body, Func queryString = null) + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesCloseAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + var url = "{0}/_close".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new CloseIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/_close + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public ElasticsearchResponse IndicesPutWarmerPost(string index, string type, string name, object body, Func queryString = null) + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesClose(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + var url = "{0}/_close".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new CloseIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/_close + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types - ///The name of the warmer - ///The search request definition for the warmer (query, filters, facets, sorting, etc) - public Task IndicesPutWarmerPostAsync(string index, string type, string name, object body, Func queryString = null) + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesCloseAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - name.ThrowIfNullOrEmpty("name"); - var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + var url = "{0}/_close".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PutWarmerQueryString()); + var qs = queryString(new CloseIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); } - ///POST /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a PUT on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - public ElasticsearchResponse IndicesRefreshForAll(Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesCreate(string index, object body, Func queryString = null, object deserializationState = null) { - var url = "_refresh"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a PUT on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - public Task IndicesRefreshForAllAsync(Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesCreateAsync(string index, object body, Func queryString = null, object deserializationState = null) { - var url = "_refresh"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a PUT on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesRefresh(string index, Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesCreate(string index, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_refresh".F(Encoded(index)); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("PUT", url, body, + queryString: nv + ); } - ///POST /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a PUT on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesRefreshAsync(string index, Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesCreateAsync(string index, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_refresh".F(Encoded(index)); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); } - ///GET /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - public ElasticsearchResponse IndicesRefreshGetForAll(Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesCreatePost(string index, object body, Func queryString = null, object deserializationState = null) { - var url = "_refresh"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - public Task IndicesRefreshGetForAllAsync(Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesCreatePostAsync(string index, object body, Func queryString = null, object deserializationState = null) { - var url = "_refresh"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesRefreshGet(string index, Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesCreatePost(string index, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_refresh".F(Encoded(index)); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///GET /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesRefreshGetAsync(string index, Func queryString = null) + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesCreatePostAsync(string index, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_refresh".F(Encoded(index)); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new RefreshQueryString()); + var qs = queryString(new CreateIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ ///Represents a DELETE on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html /// - public ElasticsearchResponse IndicesSegmentsForAll(Func queryString = null) + ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesDelete(string index, Func queryString = null, object deserializationState = null) { - var url = "_segments"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SegmentsQueryString()); + var qs = queryString(new DeleteIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ ///Represents a DELETE on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html /// - public Task IndicesSegmentsForAllAsync(Func queryString = null) + ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesDeleteAsync(string index, Func queryString = null, object deserializationState = null) { - var url = "_segments"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SegmentsQueryString()); + var qs = queryString(new DeleteIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ ///Represents a DELETE on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesSegments(string index, Func queryString = null) + ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesDelete(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_segments".F(Encoded(index)); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SegmentsQueryString()); + var qs = queryString(new DeleteIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///GET /{index}/_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ ///Represents a DELETE on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesSegmentsAsync(string index, Func queryString = null) + ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesDeleteAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_segments".F(Encoded(index)); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SegmentsQueryString()); + var qs = queryString(new DeleteIndexQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///POST /_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public ElasticsearchResponse IndicesSnapshotIndexForAll(Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesDeleteAlias(string index, string name, Func queryString = null, object deserializationState = null) { - var url = "_gateway/snapshot"; + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotQueryString()); + var qs = queryString(new IndicesDeleteAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public Task IndicesSnapshotIndexForAllAsync(Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesDeleteAliasAsync(string index, string name, Func queryString = null, object deserializationState = null) { - var url = "_gateway/snapshot"; + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotQueryString()); + var qs = queryString(new IndicesDeleteAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names; use `_all` or empty string for all indices - public ElasticsearchResponse IndicesSnapshotIndex(string index, Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesDeleteAlias(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_gateway/snapshot".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotQueryString()); + var qs = queryString(new IndicesDeleteAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///POST /{index}/_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names; use `_all` or empty string for all indices - public Task IndicesSnapshotIndexAsync(string index, Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesDeleteAliasAsync(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_gateway/snapshot".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotQueryString()); + var qs = queryString(new IndicesDeleteAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///GET /_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html /// - public ElasticsearchResponse IndicesStatsForAll(Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesDeleteMapping(string index, string type, Func queryString = null, object deserializationState = null) { - var url = "_stats"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html /// - public Task IndicesStatsForAllAsync(Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesDeleteMappingAsync(string index, string type, Func queryString = null, object deserializationState = null) { - var url = "_stats"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html /// - ///Limit the information returned the specific metrics. - public ElasticsearchResponse IndicesStatsForAll(string metric, Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesDeleteMapping(string index, string type, Func queryString = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_stats/{0}".F(Encoded(metric)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///GET /_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html /// - ///Limit the information returned the specific metrics. - public Task IndicesStatsForAllAsync(string metric, Func queryString = null) + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesDeleteMappingAsync(string index, string type, Func queryString = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_stats/{0}".F(Encoded(metric)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///GET /{index}/_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesStats(string index, Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesDeleteTemplateForAll(string name, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_stats".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesStatsAsync(string index, Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesDeleteTemplateForAllAsync(string name, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_stats".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///Limit the information returned the specific metrics. - public ElasticsearchResponse IndicesStats(string index, string metric, Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesDeleteTemplateForAll(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - metric.ThrowIfNullOrEmpty("metric"); - var url = "{0}/_stats/{1}".F(Encoded(index), Encoded(metric)); + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///GET /{index}/_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a DELETE on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///Limit the information returned the specific metrics. - public Task IndicesStatsAsync(string index, string metric, Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesDeleteTemplateForAllAsync(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - metric.ThrowIfNullOrEmpty("metric"); - var url = "{0}/_stats/{1}".F(Encoded(index), Encoded(metric)); + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatsQueryString()); + var qs = queryString(new DeleteTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///GET /_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - public ElasticsearchResponse IndicesStatusForAll(Func queryString = null) + ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. + ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesDeleteWarmer(string index, string name, Func queryString = null, object deserializationState = null) { - var url = "_status"; + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatusQueryString()); + var qs = queryString(new DeleteWarmerQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - public Task IndicesStatusForAllAsync(Func queryString = null) + ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. + ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesDeleteWarmerAsync(string index, string name, Func queryString = null, object deserializationState = null) { - var url = "_status"; + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatusQueryString()); + var qs = queryString(new DeleteWarmerQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesStatus(string index, Func queryString = null) + ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. + ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesDeleteWarmer(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_status".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatusQueryString()); + var qs = queryString(new DeleteWarmerQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); } - ///GET /{index}/_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - public Task IndicesStatusAsync(string index, Func queryString = null) + ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. + ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesDeleteWarmerAsync(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_status".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new IndicesStatusQueryString()); + var qs = queryString(new DeleteWarmerQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); } - ///POST /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a HEAD on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html /// - ///The definition of `actions` to perform - public ElasticsearchResponse IndicesUpdateAliasesForAll(object body, Func queryString = null) + ///A comma-separated list of indices to check + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesExists(string index, Func queryString = null, object deserializationState = null) { - var url = "_aliases".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AliasQueryString()); + var qs = queryString(new IndexExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a HEAD on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html /// - ///The definition of `actions` to perform - public Task IndicesUpdateAliasesForAllAsync(object body, Func queryString = null) + ///A comma-separated list of indices to check + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesExistsAsync(string index, Func queryString = null, object deserializationState = null) { - var url = "_aliases".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new AliasQueryString()); + var qs = queryString(new IndexExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html /// - public ElasticsearchResponse IndicesValidateQueryGetForAll(Func queryString = null) + ///A comma-separated list of indices to check + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesExists(string index, Func queryString = null) { - var url = "_validate/query"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndexExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///GET /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html /// - public Task IndicesValidateQueryGetForAllAsync(Func queryString = null) + ///A comma-separated list of indices to check + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesExistsAsync(string index, Func queryString = null) { - var url = "_validate/query"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndexExistsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///GET /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse IndicesValidateQueryGet(string index, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesExistsAliasForAll(string name, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_validate/query".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - public Task IndicesValidateQueryGetAsync(string index, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesExistsAliasForAllAsync(string name, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_validate/query".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - public ElasticsearchResponse IndicesValidateQueryGet(string index, string type, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesExistsAliasForAll(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - public Task IndicesValidateQueryGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesExistsAliasForAllAsync(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///POST /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The query definition specified with the Query DSL - public ElasticsearchResponse IndicesValidateQueryForAll(object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesExistsAlias(string index, string name, Func queryString = null, object deserializationState = null) { - var url = "_validate/query".F(); + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The query definition specified with the Query DSL - public Task IndicesValidateQueryForAllAsync(object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesExistsAliasAsync(string index, string name, Func queryString = null, object deserializationState = null) { - var url = "_validate/query".F(); + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///The query definition specified with the Query DSL - public ElasticsearchResponse IndicesValidateQuery(string index, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesExistsAlias(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_validate/query".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///POST /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///The query definition specified with the Query DSL - public Task IndicesValidateQueryAsync(string index, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesExistsAliasAsync(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_validate/query".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - ///The query definition specified with the Query DSL - public ElasticsearchResponse IndicesValidateQuery(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesExistsAlias(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a HEAD on /{index}/_alias + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - ///The query definition specified with the Query DSL - public Task IndicesValidateQueryAsync(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesExistsAliasAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ValidateQueryQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET / - ///
http://www.elasticsearch.org/guide/
+ ///Represents a HEAD on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public ElasticsearchResponse Info(Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesExistsAlias(string index, Func queryString = null) { - var url = ""; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new InfoQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///GET / - ///
http://www.elasticsearch.org/guide/
+ ///Represents a HEAD on /{index}/_alias + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public Task InfoAsync(Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesExistsAliasAsync(string index, Func queryString = null) { - var url = ""; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new InfoQueryString()); + var qs = queryString(new IndicesExistsAliasQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///GET /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - public ElasticsearchResponse MgetGet(Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesExistsTemplateForAll(string name, Func queryString = null, object deserializationState = null) { - var url = "_mget"; + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - public Task MgetGetAsync(Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesExistsTemplateForAllAsync(string name, Func queryString = null, object deserializationState = null) { - var url = "_mget"; + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - ///The name of the index - public ElasticsearchResponse MgetGet(string index, Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesExistsTemplateForAll(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mget".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///GET /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// - ///The name of the index - public Task MgetGetAsync(string index, Func queryString = null) + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesExistsTemplateForAllAsync(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mget".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTemplateQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// - ///The name of the index - ///The type of the document - public ElasticsearchResponse MgetGet(string index, string type, Func queryString = null) + ///A comma-separated list of index names; use `_all` to check the types across all indices + ///A comma-separated list of document types to check + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesExistsType(string index, string type, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTypeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /{index}/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// - ///The name of the index - ///The type of the document - public Task MgetGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of index names; use `_all` to check the types across all indices + ///A comma-separated list of document types to check + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesExistsTypeAsync(string index, string type, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTypeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - public ElasticsearchResponse Mget(object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` to check the types across all indices + ///A comma-separated list of document types to check + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesExistsType(string index, string type, Func queryString = null) { - var url = "_mget".F(); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTypeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); } - ///POST /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a HEAD on /{index}/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - public Task MgetAsync(object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` to check the types across all indices + ///A comma-separated list of document types to check + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesExistsTypeAsync(string index, string type, Func queryString = null) { - var url = "_mget".F(); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new IndicesExistsTypeQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); } - ///POST /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a POST on /_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - public ElasticsearchResponse Mget(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesFlushForAll(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mget".F(Encoded(index)); + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a POST on /_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - public Task MgetAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesFlushForAllAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mget".F(Encoded(index)); + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a POST on /_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///The type of the document - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - public ElasticsearchResponse Mget(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesFlushForAll(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a POST on /_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///The type of the document - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - public Task MgetAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesFlushForAllAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiGetQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ///Represents a POST on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - public ElasticsearchResponse MltGet(string index, string type, string id, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesFlush(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MoreLikeThisQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ///Represents a POST on /{index}/_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - public Task MltGetAsync(string index, string type, string id, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesFlushAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MoreLikeThisQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ///Represents a POST on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - ///A specific search request definition - public ElasticsearchResponse Mlt(string index, string type, string id, object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesFlush(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MoreLikeThisQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ///Represents a POST on /{index}/_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) - ///The document ID - ///A specific search request definition - public Task MltAsync(string index, string type, string id, object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesFlushAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MoreLikeThisQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); } - ///GET /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - public ElasticsearchResponse MpercolateGet(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesFlushGetForAll(Func queryString = null, object deserializationState = null) { - var url = "_mpercolate"; + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - public Task MpercolateGetAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesFlushGetForAllAsync(Func queryString = null, object deserializationState = null) { - var url = "_mpercolate"; + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The index of the document being count percolated to use as default - public ElasticsearchResponse MpercolateGet(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesFlushGetForAll(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mpercolate".F(Encoded(index)); + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The index of the document being count percolated to use as default - public Task MpercolateGetAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesFlushGetForAllAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mpercolate".F(Encoded(index)); + var url = "_flush"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The index of the document being count percolated to use as default - ///The type of the document being percolated to use as default. - public ElasticsearchResponse MpercolateGet(string index, string type, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesFlushGet(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The index of the document being count percolated to use as default - ///The type of the document being percolated to use as default. - public Task MpercolateGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesFlushGetAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The percolate request definitions (header & body pair), separated by newlines - public ElasticsearchResponse Mpercolate(object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesFlushGet(string index, Func queryString = null) { - var url = "_mpercolate".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - ///The percolate request definitions (header & body pair), separated by newlines - public Task MpercolateAsync(object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesFlushGetAsync(string index, Func queryString = null) { - var url = "_mpercolate".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_flush".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new FlushQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_alias + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index of the document being count percolated to use as default - ///The percolate request definitions (header & body pair), separated by newlines - public ElasticsearchResponse Mpercolate(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAliasForAll(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mpercolate".F(Encoded(index)); + var url = "_alias"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_alias + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index of the document being count percolated to use as default - ///The percolate request definitions (header & body pair), separated by newlines - public Task MpercolateAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasForAllAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mpercolate".F(Encoded(index)); + var url = "_alias"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_alias + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index of the document being count percolated to use as default - ///The type of the document being percolated to use as default. - ///The percolate request definitions (header & body pair), separated by newlines - public ElasticsearchResponse Mpercolate(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAliasForAll(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + var url = "_alias"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_alias + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index of the document being count percolated to use as default - ///The type of the document being percolated to use as default. - ///The percolate request definitions (header & body pair), separated by newlines - public Task MpercolateAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasForAllAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + var url = "_alias"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MpercolateQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public ElasticsearchResponse MsearchGet(Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAliasForAll(string name, Func queryString = null, object deserializationState = null) { - var url = "_msearch"; + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public Task MsearchGetAsync(Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasForAllAsync(string name, Func queryString = null, object deserializationState = null) { - var url = "_msearch"; + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - public ElasticsearchResponse MsearchGet(string index, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAliasForAll(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_msearch".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - public Task MsearchGetAsync(string index, Func queryString = null) + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasForAllAsync(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_msearch".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - ///A comma-separated list of document types to use as default - public ElasticsearchResponse MsearchGet(string index, string type, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAlias(string index, string name, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - ///A comma-separated list of document types to use as default - public Task MsearchGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasAsync(string index, string name, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The request definitions (metadata-search request definition pairs), separated by newlines - public ElasticsearchResponse Msearch(object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAlias(string index, string name, Func queryString = null) { - var url = "_msearch".F(); + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The request definitions (metadata-search request definition pairs), separated by newlines - public Task MsearchAsync(object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasAsync(string index, string name, Func queryString = null) { - var url = "_msearch".F(); + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - ///The request definitions (metadata-search request definition pairs), separated by newlines - public ElasticsearchResponse Msearch(string index, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAlias(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_msearch".F(Encoded(index)); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - ///The request definitions (metadata-search request definition pairs), separated by newlines - public Task MsearchAsync(string index, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_msearch".F(Encoded(index)); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - ///A comma-separated list of document types to use as default - ///The request definitions (metadata-search request definition pairs), separated by newlines - public ElasticsearchResponse Msearch(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAlias(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/_alias + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to use as default - ///A comma-separated list of document types to use as default - ///The request definitions (metadata-search request definition pairs), separated by newlines - public Task MsearchAsync(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + var url = "{0}/_alias".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MultiSearchQueryString()); + var qs = queryString(new GetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /_aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public ElasticsearchResponse MtermvectorsGet(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAliasesForAll(Func queryString = null, object deserializationState = null) { - var url = "_mtermvectors"; + var url = "_aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /_aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public Task MtermvectorsGetAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasesForAllAsync(Func queryString = null, object deserializationState = null) { - var url = "_mtermvectors"; + var url = "_aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /_aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - public ElasticsearchResponse MtermvectorsGet(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAliasesForAll(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mtermvectors".F(Encoded(index)); + var url = "_aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /_aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - public Task MtermvectorsGetAsync(string index, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasesForAllAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mtermvectors".F(Encoded(index)); + var url = "_aliases"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - ///The type of the document. - public ElasticsearchResponse MtermvectorsGet(string index, string type, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAliases(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + var url = "{0}/_aliases".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - ///The type of the document. - public Task MtermvectorsGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasesAsync(string index, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + var url = "{0}/_aliases".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - public ElasticsearchResponse Mtermvectors(object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAliases(string index, Func queryString = null) { - var url = "_mtermvectors".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_aliases".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - public Task MtermvectorsAsync(object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasesAsync(string index, Func queryString = null) { - var url = "_mtermvectors".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_aliases".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - public ElasticsearchResponse Mtermvectors(string index, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAliases(string index, string name, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mtermvectors".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_aliases/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - public Task MtermvectorsAsync(string index, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasesAsync(string index, string name, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_mtermvectors".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_aliases/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - ///The type of the document. - ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - public ElasticsearchResponse Mtermvectors(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAliases(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_aliases/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///The index in which the document resides. - ///The type of the document. - ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - public Task MtermvectorsAsync(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasesAsync(string index, string name, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_aliases/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new MtermvectorsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/nodes/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ ///Represents a GET on /_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public ElasticsearchResponse NodesHotThreadsForAll(Func queryString = null) + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetAliasesForAll(string name, Func queryString = null, object deserializationState = null) { - var url = "_cluster/nodes/hotthreads"; + name.ThrowIfNullOrEmpty("name"); + var url = "_aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesHotThreadsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/nodes/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ ///Represents a GET on /_aliases/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - public Task NodesHotThreadsForAllAsync(Func queryString = null) + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetAliasesForAllAsync(string name, Func queryString = null, object deserializationState = null) { - var url = "_cluster/nodes/hotthreads"; + name.ThrowIfNullOrEmpty("name"); + var url = "_aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesHotThreadsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_cluster/nodes/{node_id}/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ ///Represents a GET on /_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public ElasticsearchResponse NodesHotThreads(string node_id, Func queryString = null) + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetAliasesForAll(string name, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cluster/nodes/{0}/hotthreads".F(Encoded(node_id)); + name.ThrowIfNullOrEmpty("name"); + var url = "_aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesHotThreadsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_cluster/nodes/{node_id}/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ ///Represents a GET on /_aliases/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public Task NodesHotThreadsAsync(string node_id, Func queryString = null) + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetAliasesForAllAsync(string name, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cluster/nodes/{0}/hotthreads".F(Encoded(node_id)); + name.ThrowIfNullOrEmpty("name"); + var url = "_aliases/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesHotThreadsQueryString()); + var qs = queryString(new IndicesGetAliasesQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - public ElasticsearchResponse NodesInfoForAll(Func queryString = null) + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetFieldMappingForAll(string field, Func queryString = null, object deserializationState = null) { - var url = "_nodes"; + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/field/{0}".F(Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_mapping/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - public Task NodesInfoForAllAsync(Func queryString = null) + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetFieldMappingForAllAsync(string field, Func queryString = null, object deserializationState = null) { - var url = "_nodes"; + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/field/{0}".F(Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public ElasticsearchResponse NodesInfo(string node_id, Func queryString = null) + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetFieldMappingForAll(string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_nodes/{0}".F(Encoded(node_id)); + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/field/{0}".F(Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_mapping/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public Task NodesInfoAsync(string node_id, Func queryString = null) + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetFieldMappingForAllAsync(string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_nodes/{0}".F(Encoded(node_id)); + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/field/{0}".F(Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of metrics you wish returned. Leave empty to return all. - public ElasticsearchResponse NodesInfoForAll(string metric, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetFieldMapping(string index, string field, Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/{0}".F(Encoded(metric)); + index.ThrowIfNullOrEmpty("index"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/field/{1}".F(Encoded(index), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of metrics you wish returned. Leave empty to return all. - public Task NodesInfoForAllAsync(string metric, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetFieldMappingAsync(string index, string field, Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/{0}".F(Encoded(metric)); + index.ThrowIfNullOrEmpty("index"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/field/{1}".F(Encoded(index), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/{node_id}/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///A comma-separated list of metrics you wish returned. Leave empty to return all. - public ElasticsearchResponse NodesInfo(string node_id, string metric, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetFieldMapping(string index, string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/{0}/{1}".F(Encoded(node_id), Encoded(metric)); + index.ThrowIfNullOrEmpty("index"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/field/{1}".F(Encoded(index), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/{node_id}/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///A comma-separated list of metrics you wish returned. Leave empty to return all. - public Task NodesInfoAsync(string node_id, string metric, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetFieldMappingAsync(string index, string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/{0}/{1}".F(Encoded(node_id), Encoded(metric)); + index.ThrowIfNullOrEmpty("index"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/field/{1}".F(Encoded(index), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesInfoQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - public ElasticsearchResponse NodesShutdownForAll(Func queryString = null) + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetFieldMappingForAll(string type, string field, Func queryString = null, object deserializationState = null) { - var url = "_shutdown"; + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/{0}/field/{1}".F(Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesShutdownQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - public Task NodesShutdownForAllAsync(Func queryString = null) + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetFieldMappingForAllAsync(string type, string field, Func queryString = null, object deserializationState = null) { - var url = "_shutdown"; + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/{0}/field/{1}".F(Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesShutdownQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_cluster/nodes/{node_id}/_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes - public ElasticsearchResponse NodesShutdown(string node_id, Func queryString = null) + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetFieldMappingForAll(string type, string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cluster/nodes/{0}/_shutdown".F(Encoded(node_id)); + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/{0}/field/{1}".F(Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesShutdownQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_cluster/nodes/{node_id}/_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes - public Task NodesShutdownAsync(string node_id, Func queryString = null) + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetFieldMappingForAllAsync(string type, string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_cluster/nodes/{0}/_shutdown".F(Encoded(node_id)); + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "_mapping/{0}/field/{1}".F(Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesShutdownQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - public ElasticsearchResponse NodesStatsForAll(Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetFieldMapping(string index, string type, string field, Func queryString = null, object deserializationState = null) { - var url = "_nodes/stats"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/{1}/field/{2}".F(Encoded(index), Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - public Task NodesStatsForAllAsync(Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetFieldMappingAsync(string index, string type, string field, Func queryString = null, object deserializationState = null) { - var url = "_nodes/stats"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/{1}/field/{2}".F(Encoded(index), Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/{node_id}/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public ElasticsearchResponse NodesStats(string node_id, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetFieldMapping(string index, string type, string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_nodes/{0}/stats".F(Encoded(node_id)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/{1}/field/{2}".F(Encoded(index), Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/{node_id}/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - public Task NodesStatsAsync(string node_id, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetFieldMappingAsync(string index, string type, string field, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - var url = "_nodes/{0}/stats".F(Encoded(node_id)); + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + field.ThrowIfNullOrEmpty("field"); + var url = "{0}/_mapping/{1}/field/{2}".F(Encoded(index), Encoded(type), Encoded(field)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new IndicesGetFieldMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///Limit the information returned to the specified metrics - public ElasticsearchResponse NodesStatsForAll(string metric, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetMappingForAll(Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/stats/{0}".F(Encoded(metric)); + var url = "_mapping"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///Limit the information returned to the specified metrics - public Task NodesStatsForAllAsync(string metric, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetMappingForAllAsync(Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/stats/{0}".F(Encoded(metric)); + var url = "_mapping"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/{node_id}/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///Limit the information returned to the specified metrics - public ElasticsearchResponse NodesStats(string node_id, string metric, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetMappingForAll(Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/{0}/stats/{1}".F(Encoded(node_id), Encoded(metric)); + var url = "_mapping"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/{node_id}/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///Limit the information returned to the specified metrics - public Task NodesStatsAsync(string node_id, string metric, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetMappingForAllAsync(Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - metric.ThrowIfNullOrEmpty("metric"); - var url = "_nodes/{0}/stats/{1}".F(Encoded(node_id), Encoded(metric)); + var url = "_mapping"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - public ElasticsearchResponse NodesStatsForAll(string metric, string index_metric, Func queryString = null) + ///A comma-separated list of index names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetMapping(string index, Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - index_metric.ThrowIfNullOrEmpty("index_metric"); - var url = "_nodes/stats/{0}/{1}".F(Encoded(metric), Encoded(index_metric)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mapping".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - public Task NodesStatsForAllAsync(string metric, string index_metric, Func queryString = null) + ///A comma-separated list of index names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetMappingAsync(string index, Func queryString = null, object deserializationState = null) { - metric.ThrowIfNullOrEmpty("metric"); - index_metric.ThrowIfNullOrEmpty("index_metric"); - var url = "_nodes/stats/{0}/{1}".F(Encoded(metric), Encoded(index_metric)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mapping".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_nodes/{node_id}/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - public ElasticsearchResponse NodesStats(string node_id, string metric, string index_metric, Func queryString = null) + ///A comma-separated list of index names + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetMapping(string index, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - metric.ThrowIfNullOrEmpty("metric"); - index_metric.ThrowIfNullOrEmpty("index_metric"); - var url = "_nodes/{0}/stats/{1}/{2}".F(Encoded(node_id), Encoded(metric), Encoded(index_metric)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mapping".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_nodes/{node_id}/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - public Task NodesStatsAsync(string node_id, string metric, string index_metric, Func queryString = null) + ///A comma-separated list of index names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetMappingAsync(string index, Func queryString = null) { - node_id.ThrowIfNullOrEmpty("node_id"); - metric.ThrowIfNullOrEmpty("metric"); - index_metric.ThrowIfNullOrEmpty("index_metric"); - var url = "_nodes/{0}/stats/{1}/{2}".F(Encoded(node_id), Encoded(metric), Encoded(index_metric)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mapping".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new NodesStatsQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - public ElasticsearchResponse PercolateGet(string index, string type, Func queryString = null) + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetMappingForAll(string type, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + var url = "_mapping/{0}".F(Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - public Task PercolateGetAsync(string index, string type, Func queryString = null) + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetMappingForAllAsync(string type, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + var url = "_mapping/{0}".F(Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - public ElasticsearchResponse PercolateGet(string index, string type, string id, Func queryString = null) + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetMappingForAll(string type, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_mapping/{0}".F(Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - public Task PercolateGetAsync(string index, string type, string id, Func queryString = null) + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetMappingForAllAsync(string type, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "_mapping/{0}".F(Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - ///The percolator request definition using the percolate DSL - public ElasticsearchResponse Percolate(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetMapping(string index, string type, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + var url = "{0}/_mapping/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - ///The percolator request definition using the percolate DSL - public Task PercolateAsync(string index, string type, object body, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetMappingAsync(string index, string type, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + var url = "{0}/_mapping/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - ///The percolator request definition using the percolate DSL - public ElasticsearchResponse Percolate(string index, string type, string id, object body, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetMapping(string index, string type, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/_mapping/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The index of the document being percolated. - ///The type of the document being percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - ///The percolator request definition using the percolate DSL - public Task PercolateAsync(string index, string type, string id, object body, Func queryString = null) + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetMappingAsync(string index, string type, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); - id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/_mapping/{1}".F(Encoded(index), Encoded(type)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PercolateQueryString()); + var qs = queryString(new GetMappingQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///HEAD / - ///
http://www.elasticsearch.org/guide/
+ ///Represents a GET on /_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - public ElasticsearchResponse Ping(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetSettingsForAll(Func queryString = null, object deserializationState = null) { - var url = ""; + var url = "_settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PingQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///HEAD / - ///
http://www.elasticsearch.org/guide/
+ ///Represents a GET on /_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - public Task PingAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetSettingsForAllAsync(Func queryString = null, object deserializationState = null) { - var url = ""; + var url = "_settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new PingQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - public ElasticsearchResponse ScrollGet(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetSettingsForAll(Func queryString = null) { - var url = "_search/scroll"; + var url = "_settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - public Task ScrollGetAsync(Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetSettingsForAllAsync(Func queryString = null) { - var url = "_search/scroll"; + var url = "_settings"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The scroll ID - public ElasticsearchResponse ScrollGet(string scroll_id, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetSettings(string index, Func queryString = null, object deserializationState = null) { - scroll_id.ThrowIfNullOrEmpty("scroll_id"); - var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /{index}/_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The scroll ID - public Task ScrollGetAsync(string scroll_id, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetSettingsAsync(string index, Func queryString = null, object deserializationState = null) { - scroll_id.ThrowIfNullOrEmpty("scroll_id"); - var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The scroll ID if not passed by URL or query parameter. - public ElasticsearchResponse Scroll(object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetSettings(string index, Func queryString = null) { - var url = "_search/scroll".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /{index}/_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The scroll ID if not passed by URL or query parameter. - public Task ScrollAsync(object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetSettingsAsync(string index, Func queryString = null) { - var url = "_search/scroll".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /{index}/_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The scroll ID - ///The scroll ID if not passed by URL or query parameter. - public ElasticsearchResponse Scroll(string scroll_id, object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetSettings(string index, string name, Func queryString = null, object deserializationState = null) { - scroll_id.ThrowIfNullOrEmpty("scroll_id"); - var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_settings/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /{index}/_settings/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///The scroll ID - ///The scroll ID if not passed by URL or query parameter. - public Task ScrollAsync(string scroll_id, object body, Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetSettingsAsync(string index, string name, Func queryString = null, object deserializationState = null) { - scroll_id.ThrowIfNullOrEmpty("scroll_id"); - var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_settings/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new ScrollQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - public ElasticsearchResponse SearchGet(Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetSettings(string index, string name, Func queryString = null) { - var url = "_search"; + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_settings/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_settings/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - public Task SearchGetAsync(Func queryString = null) + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetSettingsAsync(string index, string name, Func queryString = null) { - var url = "_search"; + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_settings/{1}".F(Encoded(index), Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse SearchGet(string index, Func queryString = null) + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetSettingsForAll(string name, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_search".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_settings/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_settings/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - public Task SearchGetAsync(string index, Func queryString = null) + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetSettingsForAllAsync(string name, Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_search".F(Encoded(index)); + name.ThrowIfNullOrEmpty("name"); + var url = "_settings/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to search; leave empty to perform the operation on all types - public ElasticsearchResponse SearchGet(string index, string type, Func queryString = null) + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetSettingsForAll(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "_settings/{0}".F(Encoded(name)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new GetIndexSettingsQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_settings/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to search; leave empty to perform the operation on all types - public Task SearchGetAsync(string index, string type, Func queryString = null) + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetSettingsForAllAsync(string name, Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + name.ThrowIfNullOrEmpty("name"); + var url = "_settings/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetIndexSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_template + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetTemplateForAll(Func queryString = null, object deserializationState = null) + { + var url = "_template"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_template + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetTemplateForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_template"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_template + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetTemplateForAll(Func queryString = null) + { + var url = "_template"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_template + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetTemplateForAllAsync(Func queryString = null) + { + var url = "_template"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetTemplateForAll(string name, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetTemplateForAllAsync(string name, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetTemplateForAll(string name, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetTemplateForAllAsync(string name, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_warmer + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetWarmerForAll(Func queryString = null, object deserializationState = null) + { + var url = "_warmer"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_warmer + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetWarmerForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_warmer"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_warmer + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetWarmerForAll(Func queryString = null) + { + var url = "_warmer"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_warmer + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetWarmerForAllAsync(Func queryString = null) + { + var url = "_warmer"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_warmer + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetWarmer(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_warmer".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_warmer + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetWarmerAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_warmer".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_warmer + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetWarmer(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_warmer".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_warmer + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetWarmerAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_warmer".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetWarmer(string index, string name, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetWarmerAsync(string index, string name, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetWarmer(string index, string name, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetWarmerAsync(string index, string name, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetWarmerForAll(string name, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetWarmerForAllAsync(string name, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetWarmerForAll(string name, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetWarmerForAllAsync(string name, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesGetWarmer(string index, string type, string name, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesGetWarmerAsync(string index, string type, string name, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesGetWarmer(string index, string type, string name, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesGetWarmerAsync(string index, string type, string name, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new GetWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_open + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesOpen(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_open".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OpenIndexQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_open + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesOpenAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_open".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OpenIndexQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_open + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesOpen(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_open".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OpenIndexQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_open + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesOpenAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_open".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OpenIndexQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesOptimizeForAll(Func queryString = null, object deserializationState = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesOptimizeForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesOptimizeForAll(Func queryString = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesOptimizeForAllAsync(Func queryString = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesOptimize(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesOptimizeAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesOptimize(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesOptimizeAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesOptimizeGetForAll(Func queryString = null, object deserializationState = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesOptimizeGetForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesOptimizeGetForAll(Func queryString = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesOptimizeGetForAllAsync(Func queryString = null) + { + var url = "_optimize"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesOptimizeGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesOptimizeGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesOptimizeGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesOptimizeGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_optimize".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new OptimizeQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutAlias(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutAliasAsync(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutAlias(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutAliasAsync(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutAliasForAll(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutAliasForAllAsync(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutAliasForAll(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutAliasForAllAsync(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutAliasPost(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutAliasPostAsync(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutAliasPost(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutAliasPostAsync(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_alias/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutAliasPostForAll(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutAliasPostForAllAsync(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutAliasPostForAll(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutAliasPostForAllAsync(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_alias/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesPutAliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutMapping(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutMappingAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutMapping(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutMappingAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutMappingForAll(string type, object body, Func queryString = null, object deserializationState = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutMappingForAllAsync(string type, object body, Func queryString = null, object deserializationState = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutMappingForAll(string type, object body, Func queryString = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutMappingForAllAsync(string type, object body, Func queryString = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutMappingPost(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutMappingPostAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutMappingPost(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutMappingPostAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mapping".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutMappingPostForAll(string type, object body, Func queryString = null, object deserializationState = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutMappingPostForAllAsync(string type, object body, Func queryString = null, object deserializationState = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutMappingPostForAll(string type, object body, Func queryString = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutMappingPostForAllAsync(string type, object body, Func queryString = null) + { + type.ThrowIfNullOrEmpty("type"); + var url = "_mapping/{0}".F(Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutMappingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutSettingsForAll(object body, Func queryString = null, object deserializationState = null) + { + var url = "_settings".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutSettingsForAllAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_settings".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutSettingsForAll(object body, Func queryString = null) + { + var url = "_settings".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutSettingsForAllAsync(object body, Func queryString = null) + { + var url = "_settings".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutSettings(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutSettingsAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutSettings(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutSettingsAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_settings".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateSettingsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutTemplateForAll(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutTemplateForAllAsync(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutTemplateForAll(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutTemplateForAllAsync(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutTemplatePostForAll(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutTemplatePostForAllAsync(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutTemplatePostForAll(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutTemplatePostForAllAsync(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_template/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutTemplateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutWarmerForAll(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutWarmerForAllAsync(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutWarmerForAll(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutWarmerForAllAsync(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutWarmer(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutWarmerAsync(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutWarmer(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutWarmerAsync(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutWarmer(string index, string type, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutWarmerAsync(string index, string type, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutWarmer(string index, string type, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutWarmerAsync(string index, string type, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutWarmerPostForAll(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutWarmerPostForAllAsync(string name, object body, Func queryString = null, object deserializationState = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutWarmerPostForAll(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutWarmerPostForAllAsync(string name, object body, Func queryString = null) + { + name.ThrowIfNullOrEmpty("name"); + var url = "_warmer/{0}".F(Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutWarmerPost(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutWarmerPostAsync(string index, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutWarmerPost(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutWarmerPostAsync(string index, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/_warmer/{1}".F(Encoded(index), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesPutWarmerPost(string index, string type, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesPutWarmerPostAsync(string index, string type, string name, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesPutWarmerPost(string index, string type, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesPutWarmerPostAsync(string index, string type, string name, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + name.ThrowIfNullOrEmpty("name"); + var url = "{0}/{1}/_warmer/{2}".F(Encoded(index), Encoded(type), Encoded(name)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PutWarmerQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesRefreshForAll(Func queryString = null, object deserializationState = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesRefreshForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesRefreshForAll(Func queryString = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesRefreshForAllAsync(Func queryString = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesRefresh(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesRefreshAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesRefresh(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesRefreshAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesRefreshGetForAll(Func queryString = null, object deserializationState = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesRefreshGetForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesRefreshGetForAll(Func queryString = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesRefreshGetForAllAsync(Func queryString = null) + { + var url = "_refresh"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesRefreshGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesRefreshGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesRefreshGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesRefreshGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_refresh".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new RefreshQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_segments + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesSegmentsForAll(Func queryString = null, object deserializationState = null) + { + var url = "_segments"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_segments + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesSegmentsForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_segments"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_segments + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesSegmentsForAll(Func queryString = null) + { + var url = "_segments"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_segments + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesSegmentsForAllAsync(Func queryString = null) + { + var url = "_segments"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_segments + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesSegments(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_segments".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_segments + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesSegmentsAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_segments".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_segments + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesSegments(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_segments".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_segments + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesSegmentsAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_segments".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SegmentsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesSnapshotIndexForAll(Func queryString = null, object deserializationState = null) + { + var url = "_gateway/snapshot"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_gateway/snapshot + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesSnapshotIndexForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_gateway/snapshot"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesSnapshotIndexForAll(Func queryString = null) + { + var url = "_gateway/snapshot"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_gateway/snapshot + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesSnapshotIndexForAllAsync(Func queryString = null) + { + var url = "_gateway/snapshot"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesSnapshotIndex(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_gateway/snapshot".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesSnapshotIndexAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_gateway/snapshot".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesSnapshotIndex(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_gateway/snapshot".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesSnapshotIndexAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_gateway/snapshot".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesStatsForAll(Func queryString = null, object deserializationState = null) + { + var url = "_stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesStatsForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesStatsForAll(Func queryString = null) + { + var url = "_stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesStatsForAllAsync(Func queryString = null) + { + var url = "_stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesStatsForAll(string metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesStatsForAllAsync(string metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesStatsForAll(string metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesStatsForAllAsync(string metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesStats(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_stats".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesStatsAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_stats".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesStats(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_stats".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesStatsAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_stats".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesStats(string index, string metric, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "{0}/_stats/{1}".F(Encoded(index), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesStatsAsync(string index, string metric, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "{0}/_stats/{1}".F(Encoded(index), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesStats(string index, string metric, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "{0}/_stats/{1}".F(Encoded(index), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesStatsAsync(string index, string metric, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "{0}/_stats/{1}".F(Encoded(index), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_status + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesStatusForAll(Func queryString = null, object deserializationState = null) + { + var url = "_status"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_status + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesStatusForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_status"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_status + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesStatusForAll(Func queryString = null) + { + var url = "_status"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_status + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesStatusForAllAsync(Func queryString = null) + { + var url = "_status"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_status + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesStatus(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_status".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_status + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesStatusAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_status".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_status + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesStatus(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_status".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_status + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesStatusAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_status".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new IndicesStatusQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The definition of `actions` to perform + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesUpdateAliasesForAll(object body, Func queryString = null, object deserializationState = null) + { + var url = "_aliases".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new AliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The definition of `actions` to perform + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesUpdateAliasesForAllAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_aliases".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new AliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The definition of `actions` to perform + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesUpdateAliasesForAll(object body, Func queryString = null) + { + var url = "_aliases".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new AliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The definition of `actions` to perform + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesUpdateAliasesForAllAsync(object body, Func queryString = null) + { + var url = "_aliases".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new AliasQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesValidateQueryGetForAll(Func queryString = null, object deserializationState = null) + { + var url = "_validate/query"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesValidateQueryGetForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_validate/query"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesValidateQueryGetForAll(Func queryString = null) + { + var url = "_validate/query"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesValidateQueryGetForAllAsync(Func queryString = null) + { + var url = "_validate/query"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesValidateQueryGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesValidateQueryGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesValidateQueryGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesValidateQueryGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesValidateQueryGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesValidateQueryGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesValidateQueryGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesValidateQueryGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesValidateQueryForAll(object body, Func queryString = null, object deserializationState = null) + { + var url = "_validate/query".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesValidateQueryForAllAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_validate/query".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesValidateQueryForAll(object body, Func queryString = null) + { + var url = "_validate/query".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesValidateQueryForAllAsync(object body, Func queryString = null) + { + var url = "_validate/query".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesValidateQuery(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesValidateQueryAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesValidateQuery(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesValidateQueryAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_validate/query".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse IndicesValidateQuery(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> IndicesValidateQueryAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse IndicesValidateQuery(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> IndicesValidateQueryAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_validate/query".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ValidateQueryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on / + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Info(Func queryString = null, object deserializationState = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new InfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on / + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> InfoAsync(Func queryString = null, object deserializationState = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new InfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on / + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Info(Func queryString = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new InfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on / + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> InfoAsync(Func queryString = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new InfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MgetGet(Func queryString = null, object deserializationState = null) + { + var url = "_mget"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MgetGetAsync(Func queryString = null, object deserializationState = null) + { + var url = "_mget"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MgetGet(Func queryString = null) + { + var url = "_mget"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MgetGetAsync(Func queryString = null) + { + var url = "_mget"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MgetGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MgetGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MgetGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MgetGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MgetGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MgetGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MgetGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MgetGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mget(object body, Func queryString = null, object deserializationState = null) + { + var url = "_mget".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MgetAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_mget".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mget(object body, Func queryString = null) + { + var url = "_mget".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MgetAsync(object body, Func queryString = null) + { + var url = "_mget".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mget(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MgetAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mget(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MgetAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mget".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mget(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MgetAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mget(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MgetAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mget".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MltGet(string index, string type, string id, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MltGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MltGet(string index, string type, string id, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MltGetAsync(string index, string type, string id, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///A specific search request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mlt(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///A specific search request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MltAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///A specific search request definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mlt(string index, string type, string id, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///A specific search request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MltAsync(string index, string type, string id, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_mlt".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MoreLikeThisQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MpercolateGet(Func queryString = null, object deserializationState = null) + { + var url = "_mpercolate"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MpercolateGetAsync(Func queryString = null, object deserializationState = null) + { + var url = "_mpercolate"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MpercolateGet(Func queryString = null) + { + var url = "_mpercolate"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MpercolateGetAsync(Func queryString = null) + { + var url = "_mpercolate"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MpercolateGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MpercolateGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MpercolateGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MpercolateGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MpercolateGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MpercolateGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MpercolateGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MpercolateGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mpercolate(object body, Func queryString = null, object deserializationState = null) + { + var url = "_mpercolate".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MpercolateAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_mpercolate".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mpercolate(object body, Func queryString = null) + { + var url = "_mpercolate".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MpercolateAsync(object body, Func queryString = null) + { + var url = "_mpercolate".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mpercolate(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MpercolateAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mpercolate(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MpercolateAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mpercolate".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mpercolate(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MpercolateAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mpercolate(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MpercolateAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mpercolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MpercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MsearchGet(Func queryString = null, object deserializationState = null) + { + var url = "_msearch"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MsearchGetAsync(Func queryString = null, object deserializationState = null) + { + var url = "_msearch"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MsearchGet(Func queryString = null) + { + var url = "_msearch"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MsearchGetAsync(Func queryString = null) + { + var url = "_msearch"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MsearchGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MsearchGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MsearchGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MsearchGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MsearchGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MsearchGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MsearchGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MsearchGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Msearch(object body, Func queryString = null, object deserializationState = null) + { + var url = "_msearch".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MsearchAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_msearch".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Msearch(object body, Func queryString = null) + { + var url = "_msearch".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MsearchAsync(object body, Func queryString = null) + { + var url = "_msearch".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Msearch(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MsearchAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Msearch(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MsearchAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_msearch".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Msearch(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MsearchAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Msearch(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MsearchAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_msearch".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MultiSearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MtermvectorsGet(Func queryString = null, object deserializationState = null) + { + var url = "_mtermvectors"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MtermvectorsGetAsync(Func queryString = null, object deserializationState = null) + { + var url = "_mtermvectors"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MtermvectorsGet(Func queryString = null) + { + var url = "_mtermvectors"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MtermvectorsGetAsync(Func queryString = null) + { + var url = "_mtermvectors"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MtermvectorsGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MtermvectorsGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MtermvectorsGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MtermvectorsGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse MtermvectorsGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MtermvectorsGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse MtermvectorsGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MtermvectorsGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mtermvectors(object body, Func queryString = null, object deserializationState = null) + { + var url = "_mtermvectors".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MtermvectorsAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_mtermvectors".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mtermvectors(object body, Func queryString = null) + { + var url = "_mtermvectors".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MtermvectorsAsync(object body, Func queryString = null) + { + var url = "_mtermvectors".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mtermvectors(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MtermvectorsAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mtermvectors(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MtermvectorsAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_mtermvectors".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Mtermvectors(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> MtermvectorsAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Mtermvectors(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> MtermvectorsAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_mtermvectors".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new MtermvectorsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesHotThreadsForAll(Func queryString = null, object deserializationState = null) + { + var url = "_cluster/nodes/hotthreads"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesHotThreadsForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_cluster/nodes/hotthreads"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesHotThreadsForAll(Func queryString = null) + { + var url = "_cluster/nodes/hotthreads"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesHotThreadsForAllAsync(Func queryString = null) + { + var url = "_cluster/nodes/hotthreads"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesHotThreads(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/hotthreads".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesHotThreadsAsync(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/hotthreads".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesHotThreads(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/hotthreads".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesHotThreadsAsync(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/hotthreads".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesHotThreadsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesInfoForAll(Func queryString = null, object deserializationState = null) + { + var url = "_nodes"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesInfoForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_nodes"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesInfoForAll(Func queryString = null) + { + var url = "_nodes"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesInfoForAllAsync(Func queryString = null) + { + var url = "_nodes"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesInfo(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesInfoAsync(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesInfo(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesInfoAsync(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesInfoForAll(string metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesInfoForAllAsync(string metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesInfoForAll(string metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesInfoForAllAsync(string metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesInfo(string node_id, string metric, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesInfoAsync(string node_id, string metric, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesInfo(string node_id, string metric, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesInfoAsync(string node_id, string metric, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesInfoQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_shutdown + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesShutdownForAll(Func queryString = null, object deserializationState = null) + { + var url = "_shutdown"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_shutdown + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesShutdownForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_shutdown"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_shutdown + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesShutdownForAll(Func queryString = null) + { + var url = "_shutdown"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_shutdown + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesShutdownForAllAsync(Func queryString = null) + { + var url = "_shutdown"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesShutdown(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/_shutdown".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesShutdownAsync(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/_shutdown".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesShutdown(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/_shutdown".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesShutdownAsync(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_cluster/nodes/{0}/_shutdown".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesShutdownQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesStatsForAll(Func queryString = null, object deserializationState = null) + { + var url = "_nodes/stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesStatsForAllAsync(Func queryString = null, object deserializationState = null) + { + var url = "_nodes/stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesStatsForAll(Func queryString = null) + { + var url = "_nodes/stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesStatsForAllAsync(Func queryString = null) + { + var url = "_nodes/stats"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesStats(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}/stats".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesStatsAsync(string node_id, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}/stats".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesStats(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}/stats".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesStatsAsync(string node_id, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + var url = "_nodes/{0}/stats".F(Encoded(node_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesStatsForAll(string metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesStatsForAllAsync(string metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesStatsForAll(string metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesStatsForAllAsync(string metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/stats/{0}".F(Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesStats(string node_id, string metric, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/stats/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesStatsAsync(string node_id, string metric, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/stats/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesStats(string node_id, string metric, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/stats/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesStatsAsync(string node_id, string metric, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + var url = "_nodes/{0}/stats/{1}".F(Encoded(node_id), Encoded(metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesStatsForAll(string metric, string index_metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/stats/{0}/{1}".F(Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesStatsForAllAsync(string metric, string index_metric, Func queryString = null, object deserializationState = null) + { + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/stats/{0}/{1}".F(Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesStatsForAll(string metric, string index_metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/stats/{0}/{1}".F(Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesStatsForAllAsync(string metric, string index_metric, Func queryString = null) + { + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/stats/{0}/{1}".F(Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse NodesStats(string node_id, string metric, string index_metric, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/{0}/stats/{1}/{2}".F(Encoded(node_id), Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> NodesStatsAsync(string node_id, string metric, string index_metric, Func queryString = null, object deserializationState = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/{0}/stats/{1}/{2}".F(Encoded(node_id), Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse NodesStats(string node_id, string metric, string index_metric, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/{0}/stats/{1}/{2}".F(Encoded(node_id), Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> NodesStatsAsync(string node_id, string metric, string index_metric, Func queryString = null) + { + node_id.ThrowIfNullOrEmpty("node_id"); + metric.ThrowIfNullOrEmpty("metric"); + index_metric.ThrowIfNullOrEmpty("index_metric"); + var url = "_nodes/{0}/stats/{1}/{2}".F(Encoded(node_id), Encoded(metric), Encoded(index_metric)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new NodesStatsQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse PercolateGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> PercolateGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse PercolateGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> PercolateGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse PercolateGet(string index, string type, string id, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> PercolateGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse PercolateGet(string index, string type, string id, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> PercolateGetAsync(string index, string type, string id, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Percolate(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> PercolateAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Percolate(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> PercolateAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_percolate".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Percolate(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> PercolateAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Percolate(string index, string type, string id, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> PercolateAsync(string index, string type, string id, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_percolate".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PercolateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a HEAD on / + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Ping(Func queryString = null, object deserializationState = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a HEAD on / + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> PingAsync(Func queryString = null, object deserializationState = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a HEAD on / + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Ping(Func queryString = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("HEAD", url, data: null, + queryString: nv + ); + } + + ///Represents a HEAD on / + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> PingAsync(Func queryString = null) + { + var url = ""; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new PingQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("HEAD", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ScrollGet(Func queryString = null, object deserializationState = null) + { + var url = "_search/scroll"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_search/scroll + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ScrollGetAsync(Func queryString = null, object deserializationState = null) + { + var url = "_search/scroll"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ScrollGet(Func queryString = null) + { + var url = "_search/scroll"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_search/scroll + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ScrollGetAsync(Func queryString = null) + { + var url = "_search/scroll"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse ScrollGet(string scroll_id, Func queryString = null, object deserializationState = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ScrollGetAsync(string scroll_id, Func queryString = null, object deserializationState = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse ScrollGet(string scroll_id, Func queryString = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ScrollGetAsync(string scroll_id, Func queryString = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Scroll(object body, Func queryString = null, object deserializationState = null) + { + var url = "_search/scroll".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_search/scroll + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ScrollAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_search/scroll".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Scroll(object body, Func queryString = null) + { + var url = "_search/scroll".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_search/scroll + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ScrollAsync(object body, Func queryString = null) + { + var url = "_search/scroll".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Scroll(string scroll_id, object body, Func queryString = null, object deserializationState = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> ScrollAsync(string scroll_id, object body, Func queryString = null, object deserializationState = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Scroll(string scroll_id, object body, Func queryString = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> ScrollAsync(string scroll_id, object body, Func queryString = null) + { + scroll_id.ThrowIfNullOrEmpty("scroll_id"); + var url = "_search/scroll/{0}".F(Encoded(scroll_id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new ScrollQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a GET on /_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SearchGet(Func queryString = null, object deserializationState = null) + { + var url = "_search"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SearchGetAsync(Func queryString = null, object deserializationState = null) + { + var url = "_search"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SearchGet(Func queryString = null) + { + var url = "_search"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SearchGetAsync(Func queryString = null) + { + var url = "_search"; + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SearchGet(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SearchGetAsync(string index, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SearchGet(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SearchGetAsync(string index, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SearchGet(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SearchGetAsync(string index, string type, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SearchGet(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /{index}/{type}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SearchGetAsync(string index, string type, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); + } + + ///Represents a POST on /_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Search(object body, Func queryString = null, object deserializationState = null) + { + var url = "_search".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SearchAsync(object body, Func queryString = null, object deserializationState = null) + { + var url = "_search".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Search(object body, Func queryString = null) + { + var url = "_search".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SearchAsync(object body, Func queryString = null) + { + var url = "_search".F(); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Search(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SearchAsync(string index, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Search(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SearchAsync(string index, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_search".F(Encoded(index)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Search(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SearchAsync(string index, string type, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Search(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SearchAsync(string index, string type, object body, Func queryString = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SearchQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotCreate(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotCreateAsync(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotCreate(string repository, string snapshot, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotCreateAsync(string repository, string snapshot, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotCreatePost(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotCreatePostAsync(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotCreatePost(string repository, string snapshot, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotCreatePostAsync(string repository, string snapshot, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotCreateRepository(string repository, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotCreateRepositoryAsync(string repository, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotCreateRepository(string repository, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("PUT", url, body, + queryString: nv + ); + } + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotCreateRepositoryAsync(string repository, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("PUT", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotCreateRepositoryPost(string repository, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotCreateRepositoryPostAsync(string repository, object body, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotCreateRepositoryPost(string repository, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotCreateRepositoryPostAsync(string repository, object body, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotCreateRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotDelete(string repository, string snapshot, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotDeleteAsync(string repository, string snapshot, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotDelete(string repository, string snapshot, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); + } + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotDeleteAsync(string repository, string snapshot, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); + } + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotDeleteRepository(string repository, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotDeleteRepositoryAsync(string repository, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotDeleteRepository(string repository, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("DELETE", url, data: null, + queryString: nv + ); + } + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotDeleteRepositoryAsync(string repository, Func queryString = null) + { + repository.ThrowIfNullOrEmpty("repository"); + var url = "_snapshot/{0}".F(Encoded(repository)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotDeleteRepositoryQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("DELETE", url, data: null, + queryString: nv + ); + } + + ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A comma-separated list of snapshot names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotGet(string repository, string snapshot, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new SnapshotGetQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A comma-separated list of snapshot names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotGetAsync(string repository, string snapshot, Func queryString = null, object deserializationState = null) + { + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///The search definition using the Query DSL - public ElasticsearchResponse Search(object body, Func queryString = null) + ///A repository name + ///A comma-separated list of snapshot names + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotGet(string repository, string snapshot, Func queryString = null) { - var url = "_search".F(); + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///The search definition using the Query DSL - public Task SearchAsync(object body, Func queryString = null) + ///A repository name + ///A comma-separated list of snapshot names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotGetAsync(string repository, string snapshot, Func queryString = null) { - var url = "_search".F(); + repository.ThrowIfNullOrEmpty("repository"); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_snapshot + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ///The search definition using the Query DSL - public ElasticsearchResponse Search(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotGetRepository(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_search".F(Encoded(index)); + var url = "_snapshot"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_snapshot + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ///The search definition using the Query DSL - public Task SearchAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotGetRepositoryAsync(Func queryString = null, object deserializationState = null) { - index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_search".F(Encoded(index)); + var url = "_snapshot"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_snapshot + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to search; leave empty to perform the operation on all types - ///The search definition using the Query DSL - public ElasticsearchResponse Search(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotGetRepository(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + var url = "_snapshot"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /_snapshot + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to search; leave empty to perform the operation on all types - ///The search definition using the Query DSL - public Task SearchAsync(string index, string type, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotGetRepositoryAsync(Func queryString = null) { - index.ThrowIfNullOrEmpty("index"); - type.ThrowIfNullOrEmpty("type"); - var url = "{0}/{1}/_search".F(Encoded(index), Encoded(type)); + var url = "_snapshot"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SearchQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///PUT /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A repository name - ///A snapshot name - ///The snapshot definition - public ElasticsearchResponse SnapshotCreate(string repository, string snapshot, object body, Func queryString = null) + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotGetRepository(string repository, Func queryString = null, object deserializationState = null) { repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + var url = "_snapshot/{0}".F(Encoded(repository)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A repository name - ///A snapshot name - ///The snapshot definition - public Task SnapshotCreateAsync(string repository, string snapshot, object body, Func queryString = null) + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotGetRepositoryAsync(string repository, Func queryString = null, object deserializationState = null) { repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + var url = "_snapshot/{0}".F(Encoded(repository)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A repository name - ///A snapshot name - ///The snapshot definition - public ElasticsearchResponse SnapshotCreatePost(string repository, string snapshot, object body, Func queryString = null) + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotGetRepository(string repository, Func queryString = null) { repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + var url = "_snapshot/{0}".F(Encoded(repository)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - ///A repository name - ///A snapshot name - ///The snapshot definition - public Task SnapshotCreatePostAsync(string repository, string snapshot, object body, Func queryString = null) + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotGetRepositoryAsync(string repository, Func queryString = null) { repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + var url = "_snapshot/{0}".F(Encoded(repository)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateQueryString()); + var qs = queryString(new SnapshotGetRepositoryQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///PUT /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name - ///The repository definition - public ElasticsearchResponse SnapshotCreateRepository(string repository, object body, Func queryString = null) + ///A snapshot name + ///Details of what to restore + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SnapshotRestore(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null) { repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}/_restore".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateRepositoryQueryString()); + var qs = queryString(new SnapshotRestoreQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///PUT /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name - ///The repository definition - public Task SnapshotCreateRepositoryAsync(string repository, object body, Func queryString = null) + ///A snapshot name + ///Details of what to restore + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SnapshotRestoreAsync(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null) { repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}/_restore".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateRepositoryQueryString()); + var qs = queryString(new SnapshotRestoreQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name - ///The repository definition - public ElasticsearchResponse SnapshotCreateRepositoryPost(string repository, object body, Func queryString = null) + ///A snapshot name + ///Details of what to restore + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SnapshotRestore(string repository, string snapshot, object body, Func queryString = null) { repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}/_restore".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateRepositoryQueryString()); + var qs = queryString(new SnapshotRestoreQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///POST /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name - ///The repository definition - public Task SnapshotCreateRepositoryPostAsync(string repository, object body, Func queryString = null) + ///A snapshot name + ///Details of what to restore + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SnapshotRestoreAsync(string repository, string snapshot, object body, Func queryString = null) { repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + snapshot.ThrowIfNullOrEmpty("snapshot"); + var url = "_snapshot/{0}/{1}/_restore".F(Encoded(repository), Encoded(snapshot)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotCreateRepositoryQueryString()); + var qs = queryString(new SnapshotRestoreQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///DELETE /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A repository name - ///A snapshot name - public ElasticsearchResponse SnapshotDelete(string repository, string snapshot, Func queryString = null) + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Suggest(object body, Func queryString = null, object deserializationState = null) { - repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + var url = "_suggest".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotDeleteQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A repository name - ///A snapshot name - public Task SnapshotDeleteAsync(string repository, string snapshot, Func queryString = null) + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SuggestAsync(object body, Func queryString = null, object deserializationState = null) { - repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + var url = "_suggest".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotDeleteQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///DELETE /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A comma-separated list of repository names - public ElasticsearchResponse SnapshotDeleteRepository(string repository, Func queryString = null) + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Suggest(object body, Func queryString = null) { - repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + var url = "_suggest".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotDeleteRepositoryQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///DELETE /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A comma-separated list of repository names - public Task SnapshotDeleteRepositoryAsync(string repository, Func queryString = null) + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SuggestAsync(object body, Func queryString = null) { - repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + var url = "_suggest".F(); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotDeleteRepositoryQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A repository name - ///A comma-separated list of snapshot names - public ElasticsearchResponse SnapshotGet(string repository, string snapshot, Func queryString = null) + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Suggest(string index, object body, Func queryString = null, object deserializationState = null) { - repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotGetQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /{index}/_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A repository name - ///A comma-separated list of snapshot names - public Task SnapshotGetAsync(string repository, string snapshot, Func queryString = null) + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SuggestAsync(string index, object body, Func queryString = null, object deserializationState = null) { - repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}".F(Encoded(repository), Encoded(snapshot)); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotGetQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - public ElasticsearchResponse SnapshotGetRepository(Func queryString = null) + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Suggest(string index, object body, Func queryString = null) { - var url = "_snapshot"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotGetRepositoryQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///GET /_snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /{index}/_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - public Task SnapshotGetRepositoryAsync(Func queryString = null) + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SuggestAsync(string index, object body, Func queryString = null) { - var url = "_snapshot"; + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotGetRepositoryQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } - ///GET /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A comma-separated list of repository names - public ElasticsearchResponse SnapshotGetRepository(string repository, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SuggestGet(Func queryString = null, object deserializationState = null) { - repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + var url = "_suggest"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotGetRepositoryQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A comma-separated list of repository names - public Task SnapshotGetRepositoryAsync(string repository, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SuggestGetAsync(Func queryString = null, object deserializationState = null) { - repository.ThrowIfNullOrEmpty("repository"); - var url = "_snapshot/{0}".F(Encoded(repository)); + var url = "_suggest"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotGetRepositoryQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_snapshot/{repository}/{snapshot}/_restore - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A repository name - ///A snapshot name - ///Details of what to restore - public ElasticsearchResponse SnapshotRestore(string repository, string snapshot, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SuggestGet(Func queryString = null) { - repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}/_restore".F(Encoded(repository), Encoded(snapshot)); + var url = "_suggest"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotRestoreQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///POST /_snapshot/{repository}/{snapshot}/_restore - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A repository name - ///A snapshot name - ///Details of what to restore - public Task SnapshotRestoreAsync(string repository, string snapshot, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SuggestGetAsync(Func queryString = null) { - repository.ThrowIfNullOrEmpty("repository"); - snapshot.ThrowIfNullOrEmpty("snapshot"); - var url = "_snapshot/{0}/{1}/_restore".F(Encoded(repository), Encoded(snapshot)); + var url = "_suggest"; NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SnapshotRestoreQueryString()); + var qs = queryString(new SuggestQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///POST /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///The request definition - public ElasticsearchResponse Suggest(object body, Func queryString = null) + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse SuggestGet(string index, Func queryString = null, object deserializationState = null) { - var url = "_suggest".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -8220,16 +27380,29 @@ public ElasticsearchResponse Suggest(object body, Func("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///The request definition - public Task SuggestAsync(object body, Func queryString = null) + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> SuggestGetAsync(string index, Func queryString = null, object deserializationState = null) { - var url = "_suggest".F(); + index.ThrowIfNullOrEmpty("index"); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -8237,18 +27410,30 @@ public Task SuggestAsync(object body, Func("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///The request definition - public ElasticsearchResponse Suggest(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse SuggestGet(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_suggest".F(Encoded(index)); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -8256,18 +27441,29 @@ public ElasticsearchResponse Suggest(string index, object body, Func("GET", url, data: null, + queryString: nv + ); } - ///POST /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///The request definition - public Task SuggestAsync(string index, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> SuggestGetAsync(string index, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_suggest".F(Encoded(index)); + var url = "{0}/_suggest".F(Encoded(index)); NameValueCollection nv = null; if (queryString != null) { @@ -8275,89 +27471,169 @@ public Task SuggestAsync(string index, object body, Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// - public ElasticsearchResponse SuggestGet(Func queryString = null) + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse TermvectorGet(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_suggest"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SuggestQueryString()); + var qs = queryString(new TermvectorQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// - public Task SuggestGetAsync(Func queryString = null) + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> TermvectorGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { - var url = "_suggest"; + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SuggestQueryString()); + var qs = queryString(new TermvectorQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - public ElasticsearchResponse SuggestGet(string index, Func queryString = null) + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse TermvectorGet(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_suggest".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SuggestQueryString()); + var qs = queryString(new TermvectorQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - public Task SuggestGetAsync(string index, Func queryString = null) + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> TermvectorGetAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); - var url = "{0}/_suggest".F(Encoded(index)); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new SuggestQueryString()); + var qs = queryString(new TermvectorQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("GET", url, data: null, + queryString: nv + ); } - ///GET /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. - public ElasticsearchResponse TermvectorGet(string index, string type, string id, Func queryString = null) + ///Define parameters. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Termvector(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { @@ -8365,21 +27641,34 @@ public ElasticsearchResponse TermvectorGet(string index, string type, string id, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///GET /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. - public Task TermvectorGetAsync(string index, string type, string id, Func queryString = null) + ///Define parameters. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> TermvectorAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { @@ -8387,22 +27676,35 @@ public Task TermvectorGetAsync(string index, string type, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. ///Define parameters. See documentation. - public ElasticsearchResponse Termvector(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Termvector(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { @@ -8410,22 +27712,34 @@ public ElasticsearchResponse Termvector(string index, string type, string id, ob if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///POST /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. ///Define parameters. See documentation. - public Task TermvectorAsync(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> TermvectorAsync(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/{1}/{2}/_termvector".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { @@ -8433,22 +27747,104 @@ public Task TermvectorAsync(string index, string type, st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html + /// + ///The name of the index + ///The type of the document + ///Document ID + ///The request definition using either `script` or partial `doc` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public ElasticsearchResponse Update(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_update".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequest("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); + } + + ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html + /// + ///The name of the index + ///The type of the document + ///Document ID + ///The request definition using either `script` or partial `doc` + ///Optional function to specify any additional querystring parameters for the request. + ///Optional state that will be passed to the deserialization call for the response + ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + public Task> UpdateAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null) + { + index.ThrowIfNullOrEmpty("index"); + type.ThrowIfNullOrEmpty("type"); + id.ThrowIfNullOrEmpty("id"); + var url = "{0}/{1}/{2}/_update".F(Encoded(index), Encoded(type), Encoded(id)); + NameValueCollection nv = null; + if (queryString != null) + { + var qs = queryString(new UpdateQueryString()); + if (qs != null) nv = this.ToNameValueCollection(qs); + } + + return this.DoRequestAsync("POST", url, body, + queryString: nv + , deserializationState: deserializationState + ); } - ///POST /{index}/{type}/{id}/_update - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html
+ ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html /// ///The name of the index ///The type of the document ///Document ID ///The request definition using either `script` or partial `doc` - public ElasticsearchResponse Update(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public ElasticsearchResponse Update(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_update".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/{1}/{2}/_update".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { @@ -8456,22 +27852,34 @@ public ElasticsearchResponse Update(string index, string type, string id, object if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, queryString: nv); + return this.DoRequest("POST", url, body, + queryString: nv + ); } - ///POST /{index}/{type}/{id}/_update - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html
+ ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html /// ///The name of the index ///The type of the document ///Document ID ///The request definition using either `script` or partial `doc` - public Task UpdateAsync(string index, string type, string id, object body, Func queryString = null) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + public Task> UpdateAsync(string index, string type, string id, object body, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); id.ThrowIfNullOrEmpty("id"); - var url = "{0}/{1}/{2}/_update".F(Encoded(index), Encoded(type), Encoded(id)); + var url = "{0}/{1}/{2}/_update".F(Encoded(index), Encoded(type), Encoded(id)); NameValueCollection nv = null; if (queryString != null) { @@ -8479,7 +27887,9 @@ public Task UpdateAsync(string index, string type, string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, queryString: nv); + return this.DoRequestAsync("POST", url, body, + queryString: nv + ); } } diff --git a/src/Elasticsearch.Net/ElasticsearchClient.cs b/src/Elasticsearch.Net/ElasticsearchClient.cs index 9003c4908bf..fa20dd2b553 100644 --- a/src/Elasticsearch.Net/ElasticsearchClient.cs +++ b/src/Elasticsearch.Net/ElasticsearchClient.cs @@ -59,15 +59,15 @@ public string Encoded(object o) } - protected ElasticsearchResponse DoRequest(string method, string path, object data = null, NameValueCollection queryString = null) + protected ElasticsearchResponse DoRequest(string method, string path, object data = null, NameValueCollection queryString = null, object deserializationState = null) { - return this.Transport.DoRequest(method, path, data, queryString); + return this.Transport.DoRequest(method, path, data, queryString, deserializationState); } - protected Task DoRequestAsync(string method, string path, object data = null, NameValueCollection queryString = null) + protected Task> DoRequestAsync(string method, string path, object data = null, NameValueCollection queryString = null, object deserializationState = null) { - return this.Transport.DoRequestAsync(method, path, data, queryString); + return this.Transport.DoRequestAsync(method, path, data, queryString, deserializationState); } } } diff --git a/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs b/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs index 978390cafae..37f02a83d78 100644 --- a/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs +++ b/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs @@ -5,9 +5,8 @@ using System.Text; using System.Threading.Tasks; using Elasticsearch.Net.Connection; -///Generated File Please Do Not Edit Manually -using Elasticsearch.Net.Serialization; +///Generated File Please Do Not Edit Manually namespace Elasticsearch.Net { /// @@ -21,2948 +20,15009 @@ namespace Elasticsearch.Net /// public interface IElasticsearchClient { - IConnectionConfigurationValues Settings { get; } - IElasticsearchSerializer Serializer { get; } + //IConnection Connection { get; } + //IConnectionConfigurationValues Settings { get; } + //IElasticsearchSerializer Serializer { get; } - ///POST /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Bulk(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> BulkAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Bulk(object body, Func queryString = null); + + ///Represents a POST on /_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> BulkAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// + ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - ElasticsearchResponse Bulk(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Bulk(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// + ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - Task BulkAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> BulkAsync(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - ElasticsearchResponse Bulk(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Bulk(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///Default index for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> BulkAsync(string index, object body, Func queryString = null); - ///POST /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one + ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - Task BulkAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Bulk(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a POST on /{index}/{type}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - ElasticsearchResponse Bulk(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ Task> BulkAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Bulk(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - Task BulkAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> BulkAsync(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse BulkPut(object body, Func queryString = null, object deserializationState = null); - ///PUT /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a PUT on /_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///The operation definition and data (action-data pairs), separated by newlines - ElasticsearchResponse BulkPut(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ Task> BulkPutAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse BulkPut(object body, Func queryString = null); + + ///Represents a PUT on /_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///The operation definition and data (action-data pairs), separated by newlines - Task BulkPutAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> BulkPutAsync(object body, Func queryString = null); - ///PUT /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a PUT on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - ElasticsearchResponse BulkPut(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /{index}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ElasticsearchResponse BulkPut(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - Task BulkPutAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> BulkPutAsync(string index, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ ///Represents a PUT on /{index}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///Default index for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse BulkPut(string index, object body, Func queryString = null); + + ///Represents a PUT on /{index}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one - ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - ElasticsearchResponse BulkPut(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /{index}/{type}/_bulk - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html
+ Task> BulkPutAsync(string index, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// ///Default index for items which don't provide one ///Default document type for items which don't provide one ///The operation definition and data (action-data pairs), separated by newlines - Task BulkPutAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
- ///
- ElasticsearchResponse CatAliases(Func queryString = null); + ElasticsearchResponse BulkPut(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///GET /_cat/aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html /// - Task CatAliasesAsync(Func queryString = null); + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> BulkPutAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///GET /_cat/aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse BulkPut(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/_bulk + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html + /// + ///Default index for items which don't provide one + ///Default document type for items which don't provide one + ///The operation definition and data (action-data pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> BulkPutAsync(string index, string type, object body, Func queryString = null); + + ///Represents a GET on /_cat/aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatAliases(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatAliasesAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatAliases(Func queryString = null); + + ///Represents a GET on /_cat/aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatAliasesAsync(Func queryString = null); + + ///Represents a GET on /_cat/aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// ///A comma-separated list of alias names to return - ElasticsearchResponse CatAliases(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html
+ ElasticsearchResponse CatAliases(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/aliases/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// ///A comma-separated list of alias names to return - Task CatAliasesAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/allocation - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
- ///
- ElasticsearchResponse CatAllocation(Func queryString = null); + Task> CatAliasesAsync(string name, Func queryString = null, object deserializationState = null); - ///GET /_cat/allocation - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ///Represents a GET on /_cat/aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html /// - Task CatAllocationAsync(Func queryString = null); - - ///GET /_cat/allocation/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatAliases(string name, Func queryString = null); + + ///Represents a GET on /_cat/aliases/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-aliases.html + /// + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatAliasesAsync(string name, Func queryString = null); + + ///Represents a GET on /_cat/allocation + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatAllocation(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/allocation + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatAllocationAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/allocation + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatAllocation(Func queryString = null); + + ///Represents a GET on /_cat/allocation + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatAllocationAsync(Func queryString = null); + + ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// ///A comma-separated list of node IDs or names to limit the returned information - ElasticsearchResponse CatAllocation(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/allocation/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html
+ ElasticsearchResponse CatAllocation(string node_id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// ///A comma-separated list of node IDs or names to limit the returned information - Task CatAllocationAsync(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
- ///
- ElasticsearchResponse CatCount(Func queryString = null); + Task> CatAllocationAsync(string node_id, Func queryString = null, object deserializationState = null); - ///GET /_cat/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - Task CatCountAsync(Func queryString = null); - - ///GET /_cat/count/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///A comma-separated list of node IDs or names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatAllocation(string node_id, Func queryString = null); + + ///Represents a GET on /_cat/allocation/{node_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-allocation.html /// - ///A comma-separated list of index names to limit the returned information - ElasticsearchResponse CatCount(string index, Func queryString = null); - - ///GET /_cat/count/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html
+ ///A comma-separated list of node IDs or names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatAllocationAsync(string node_id, Func queryString = null); + + ///Represents a GET on /_cat/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatCount(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatCountAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatCount(Func queryString = null); + + ///Represents a GET on /_cat/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatCountAsync(Func queryString = null); + + ///Represents a GET on /_cat/count/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// ///A comma-separated list of index names to limit the returned information - Task CatCountAsync(string index, Func queryString = null); - - ///GET /_cat/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html
- ///
- ElasticsearchResponse CatHealth(Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html
- ///
- Task CatHealthAsync(Func queryString = null); + ElasticsearchResponse CatCount(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html
+ ///Represents a GET on /_cat/count/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - ElasticsearchResponse CatHelp(Func queryString = null); + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html
- ///
- Task CatHelpAsync(Func queryString = null); + Task> CatCountAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat/indices - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///Represents a GET on /_cat/count/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - ElasticsearchResponse CatIndices(Func queryString = null); - - ///GET /_cat/indices - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatCount(string index, Func queryString = null); + + ///Represents a GET on /_cat/count/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-count.html /// - Task CatIndicesAsync(Func queryString = null); - - ///GET /_cat/indices/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatCountAsync(string index, Func queryString = null); + + ///Represents a GET on /_cat/health + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatHealth(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/health + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatHealthAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/health + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatHealth(Func queryString = null); + + ///Represents a GET on /_cat/health + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatHealthAsync(Func queryString = null); + + ///Represents a GET on /_cat + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatHelp(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatHelpAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatHelp(Func queryString = null); + + ///Represents a GET on /_cat + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatHelpAsync(Func queryString = null); + + ///Represents a GET on /_cat/indices + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatIndices(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/indices + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatIndicesAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/indices + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatIndices(Func queryString = null); + + ///Represents a GET on /_cat/indices + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatIndicesAsync(Func queryString = null); + + ///Represents a GET on /_cat/indices/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// ///A comma-separated list of index names to limit the returned information - ElasticsearchResponse CatIndices(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/indices/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html
+ ElasticsearchResponse CatIndices(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/indices/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// ///A comma-separated list of index names to limit the returned information - Task CatIndicesAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/master - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html
- ///
- ElasticsearchResponse CatMaster(Func queryString = null); + Task> CatIndicesAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat/master - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html
+ ///Represents a GET on /_cat/indices/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - Task CatMasterAsync(Func queryString = null); - - ///GET /_cat/nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html
+ ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatIndices(string index, Func queryString = null); + + ///Represents a GET on /_cat/indices/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-indices.html /// - ElasticsearchResponse CatNodes(Func queryString = null); - - ///GET /_cat/nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html
+ ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatIndicesAsync(string index, Func queryString = null); + + ///Represents a GET on /_cat/master + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatMaster(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/master + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatMasterAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/master + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatMaster(Func queryString = null); + + ///Represents a GET on /_cat/master + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-master.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatMasterAsync(Func queryString = null); + + ///Represents a GET on /_cat/nodes + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatNodes(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/nodes + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatNodesAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/nodes + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatNodes(Func queryString = null); + + ///Represents a GET on /_cat/nodes + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-nodes.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatNodesAsync(Func queryString = null); + + ///Represents a GET on /_cat/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatPendingTasks(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/pending_tasks + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatPendingTasksAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatPendingTasks(Func queryString = null); + + ///Represents a GET on /_cat/pending_tasks + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatPendingTasksAsync(Func queryString = null); + + ///Represents a GET on /_cat/recovery + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatRecovery(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/recovery + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatRecoveryAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/recovery + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatRecovery(Func queryString = null); + + ///Represents a GET on /_cat/recovery + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatRecoveryAsync(Func queryString = null); + + ///Represents a GET on /_cat/recovery/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - Task CatNodesAsync(Func queryString = null); + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html
- ///
- ElasticsearchResponse CatPendingTasks(Func queryString = null); + ElasticsearchResponse CatRecovery(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-pending-tasks.html
+ ///Represents a GET on /_cat/recovery/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - Task CatPendingTasksAsync(Func queryString = null); + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/recovery - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
- ///
- ElasticsearchResponse CatRecovery(Func queryString = null); + Task> CatRecoveryAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat/recovery - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///Represents a GET on /_cat/recovery/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// - Task CatRecoveryAsync(Func queryString = null); - - ///GET /_cat/recovery/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatRecovery(string index, Func queryString = null); + + ///Represents a GET on /_cat/recovery/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html /// ///A comma-separated list of index names to limit the returned information - ElasticsearchResponse CatRecovery(string index, Func queryString = null); - - ///GET /_cat/recovery/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-recovery.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatRecoveryAsync(string index, Func queryString = null); + + ///Represents a GET on /_cat/shards + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatShards(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/shards + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatShardsAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/shards + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatShards(Func queryString = null); + + ///Represents a GET on /_cat/shards + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatShardsAsync(Func queryString = null); + + ///Represents a GET on /_cat/shards/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// ///A comma-separated list of index names to limit the returned information - Task CatRecoveryAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/shards - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
- ///
- ElasticsearchResponse CatShards(Func queryString = null); + ElasticsearchResponse CatShards(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat/shards - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Represents a GET on /_cat/shards/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// - Task CatShardsAsync(Func queryString = null); + ///A comma-separated list of index names to limit the returned information + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatShardsAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_cat/shards/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Represents a GET on /_cat/shards/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// ///A comma-separated list of index names to limit the returned information - ElasticsearchResponse CatShards(string index, Func queryString = null); - - ///GET /_cat/shards/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatShards(string index, Func queryString = null); + + ///Represents a GET on /_cat/shards/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cat-shards.html /// ///A comma-separated list of index names to limit the returned information - Task CatShardsAsync(string index, Func queryString = null); - - ///GET /_cat/thread_pool - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatShardsAsync(string index, Func queryString = null); + + ///Represents a GET on /_cat/thread_pool + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CatThreadPool(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/thread_pool + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CatThreadPoolAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cat/thread_pool + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CatThreadPool(Func queryString = null); + + ///Represents a GET on /_cat/thread_pool + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CatThreadPoolAsync(Func queryString = null); + + ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ElasticsearchResponse CatThreadPool(Func queryString = null); + ///A comma-separated list of scroll IDs to clear + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cat/thread_pool - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cat-thread-pool.html
- ///
- Task CatThreadPoolAsync(Func queryString = null); + ElasticsearchResponse ClearScroll(string scroll_id, Func queryString = null, object deserializationState = null); - ///DELETE /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///A comma-separated list of scroll IDs to clear - ElasticsearchResponse ClearScroll(string scroll_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ Task> ClearScrollAsync(string scroll_id, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///A comma-separated list of scroll IDs to clear - Task ClearScrollAsync(string scroll_id, Func queryString = null); - - ///GET /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClearScroll(string scroll_id, Func queryString = null); + + ///Represents a DELETE on /_search/scroll/{scroll_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ElasticsearchResponse ClusterGetSettings(Func queryString = null); - - ///GET /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///A comma-separated list of scroll IDs to clear + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClearScrollAsync(string scroll_id, Func queryString = null); + + ///Represents a GET on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterGetSettings(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ClusterGetSettingsAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterGetSettings(Func queryString = null); + + ///Represents a GET on /_cluster/settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterGetSettingsAsync(Func queryString = null); + + ///Represents a GET on /_cluster/health + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterHealth(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/health + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ClusterHealthAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/health + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterHealth(Func queryString = null); + + ///Represents a GET on /_cluster/health + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterHealthAsync(Func queryString = null); + + ///Represents a GET on /_cluster/health/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - Task ClusterGetSettingsAsync(Func queryString = null); + ///Limit the information returned to a specific index + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
- ///
- ElasticsearchResponse ClusterHealth(Func queryString = null); + ElasticsearchResponse ClusterHealth(string index, Func queryString = null, object deserializationState = null); - ///GET /_cluster/health - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Represents a GET on /_cluster/health/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// - Task ClusterHealthAsync(Func queryString = null); + ///Limit the information returned to a specific index + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ClusterHealthAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_cluster/health/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Represents a GET on /_cluster/health/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// ///Limit the information returned to a specific index - ElasticsearchResponse ClusterHealth(string index, Func queryString = null); - - ///GET /_cluster/health/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterHealth(string index, Func queryString = null); + + ///Represents a GET on /_cluster/health/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-health.html /// ///Limit the information returned to a specific index - Task ClusterHealthAsync(string index, Func queryString = null); - - ///GET /_cluster/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterHealthAsync(string index, Func queryString = null); + + ///Represents a GET on /_cluster/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterPendingTasks(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/pending_tasks + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ClusterPendingTasksAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/pending_tasks + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterPendingTasks(Func queryString = null); + + ///Represents a GET on /_cluster/pending_tasks + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterPendingTasksAsync(Func queryString = null); + + ///Represents a PUT on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// - ElasticsearchResponse ClusterPendingTasks(Func queryString = null); + ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/pending_tasks - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-pending.html
- ///
- Task ClusterPendingTasksAsync(Func queryString = null); + ElasticsearchResponse ClusterPutSettings(object body, Func queryString = null, object deserializationState = null); - ///PUT /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ ///Represents a PUT on /_cluster/settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). - ElasticsearchResponse ClusterPutSettings(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_cluster/settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html
+ Task> ClusterPutSettingsAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_cluster/settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html + /// + ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterPutSettings(object body, Func queryString = null); + + ///Represents a PUT on /_cluster/settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-update-settings.html /// ///The settings to be updated. Can be either `transient` or `persistent` (survives cluster restart). - Task ClusterPutSettingsAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterPutSettingsAsync(object body, Func queryString = null); - ///POST /_cluster/reroute - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html
+ ///Represents a POST on /_cluster/reroute + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) - ElasticsearchResponse ClusterReroute(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_cluster/reroute - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html
+ ElasticsearchResponse ClusterReroute(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_cluster/reroute + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) - Task ClusterRerouteAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/state - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
- ///
- ElasticsearchResponse ClusterState(Func queryString = null); + Task> ClusterRerouteAsync(object body, Func queryString = null, object deserializationState = null); - ///GET /_cluster/state - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a POST on /_cluster/reroute + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html /// - Task ClusterStateAsync(Func queryString = null); + ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterReroute(object body, Func queryString = null); + + ///Represents a POST on /_cluster/reroute + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-reroute.html + /// + ///The definition of `commands` to perform (`move`, `cancel`, `allocate`) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterRerouteAsync(object body, Func queryString = null); + + ///Represents a GET on /_cluster/state + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterState(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/state + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ClusterStateAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/state + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterState(Func queryString = null); + + ///Represents a GET on /_cluster/state + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterStateAsync(Func queryString = null); + + ///Represents a GET on /_cluster/state/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterState(string metric, Func queryString = null, object deserializationState = null); - ///GET /_cluster/state/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cluster/state/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// ///Limit the information returned to the specified metrics - ElasticsearchResponse ClusterState(string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/state/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ Task> ClusterStateAsync(string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/state/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterState(string metric, Func queryString = null); + + ///Represents a GET on /_cluster/state/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// ///Limit the information returned to the specified metrics - Task ClusterStateAsync(string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterStateAsync(string metric, Func queryString = null); - ///GET /_cluster/state/{metric}/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// ///Limit the information returned to the specified metrics ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse ClusterState(string metric, string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/state/{metric}/{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html
+ ElasticsearchResponse ClusterState(string metric, string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html /// ///Limit the information returned to the specified metrics ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task ClusterStateAsync(string metric, string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
- ///
- ElasticsearchResponse ClusterStats(Func queryString = null); + Task> ClusterStateAsync(string metric, string index, Func queryString = null, object deserializationState = null); - ///GET /_cluster/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Limit the information returned to the specified metrics + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterState(string metric, string index, Func queryString = null); + + ///Represents a GET on /_cluster/state/{metric}/{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-state.html + /// + ///Limit the information returned to the specified metrics + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterStateAsync(string metric, string index, Func queryString = null); + + ///Represents a GET on /_cluster/stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterStats(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ClusterStatsAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterStats(Func queryString = null); + + ///Represents a GET on /_cluster/stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterStatsAsync(Func queryString = null); + + ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// - Task ClusterStatsAsync(Func queryString = null); + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ClusterStats(string node_id, Func queryString = null, object deserializationState = null); - ///GET /_cluster/stats/nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ElasticsearchResponse ClusterStats(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/stats/nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html
+ Task> ClusterStatsAsync(string node_id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ClusterStats(string node_id, Func queryString = null); + + ///Represents a GET on /_cluster/stats/nodes/{node_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-stats.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - Task ClusterStatsAsync(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ClusterStatsAsync(string node_id, Func queryString = null); - ///POST /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a POST on /_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A query to restrict the results specified with the Query DSL (optional) - ElasticsearchResponse Count(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ElasticsearchResponse Count(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Count(object body, Func queryString = null); + + ///Represents a POST on /_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// + ///A comma-separated list of indices to restrict the results ///A query to restrict the results specified with the Query DSL (optional) - Task CountAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ElasticsearchResponse Count(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results ///A query to restrict the results specified with the Query DSL (optional) - ElasticsearchResponse Count(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountAsync(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a POST on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A comma-separated list of indices to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Count(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results ///A query to restrict the results specified with the Query DSL (optional) - Task CountAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountAsync(string index, object body, Func queryString = null); - ///POST /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a POST on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results ///A comma-separated list of types to restrict the results ///A query to restrict the results specified with the Query DSL (optional) - ElasticsearchResponse Count(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ElasticsearchResponse Count(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results ///A comma-separated list of types to restrict the results ///A query to restrict the results specified with the Query DSL (optional) - Task CountAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///GET /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a POST on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Count(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - ElasticsearchResponse CountGet(Func queryString = null); + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///A query to restrict the results specified with the Query DSL (optional) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountAsync(string index, string type, object body, Func queryString = null); + + ///Represents a GET on /_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CountGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountGet(Func queryString = null); + + ///Represents a GET on /_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CountGet(string index, Func queryString = null, object deserializationState = null); - ///GET /_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /{index}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// - Task CountGetAsync(Func queryString = null); + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountGetAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /{index}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results - ElasticsearchResponse CountGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A comma-separated list of indices to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /{index}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ Task> CountGetAsync(string index, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results - Task CountGetAsync(string index, Func queryString = null); + ///A comma-separated list of types to restrict the results + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ElasticsearchResponse CountGet(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results ///A comma-separated list of types to restrict the results - ElasticsearchResponse CountGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountGetAsync(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html
+ ///Represents a GET on /{index}/{type}/_count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html + /// + ///A comma-separated list of indices to restrict the results + ///A comma-separated list of types to restrict the results + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-count.html /// ///A comma-separated list of indices to restrict the results ///A comma-separated list of types to restrict the results - Task CountGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountGetAsync(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CountPercolateGet(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountPercolateGetAsync(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. - ElasticsearchResponse CountPercolateGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountPercolateGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountPercolateGetAsync(string index, string type, Func queryString = null); - ///GET /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. - Task CountPercolateGetAsync(string index, string type, Func queryString = null); + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CountPercolateGet(string index, string type, string id, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - ElasticsearchResponse CountPercolateGet(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> CountPercolateGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountPercolateGet(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - Task CountPercolateGetAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountPercolateGetAsync(string index, string type, string id, Func queryString = null); - ///POST /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse CountPercolate(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountPercolateAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountPercolate(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. ///The count percolator request definition using the percolate DSL - ElasticsearchResponse CountPercolate(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/{type}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> CountPercolateAsync(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. ///The count percolator request definition using the percolate DSL - Task CountPercolateAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ElasticsearchResponse CountPercolate(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. ///The count percolator request definition using the percolate DSL - ElasticsearchResponse CountPercolate(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> CountPercolateAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/{id}/_percolate/count - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated. + ///The type of the document being count percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The count percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse CountPercolate(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_percolate/count + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated. ///The type of the document being count percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. ///The count percolator request definition using the percolate DSL - Task CountPercolateAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> CountPercolateAsync(string index, string type, string id, object body, Func queryString = null); + + ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html + /// + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Delete(string index, string type, string id, Func queryString = null, object deserializationState = null); - ///DELETE /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html
+ ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html /// ///The name of the index ///The type of the document ///The document ID - ElasticsearchResponse Delete(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html
+ Task> DeleteAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html + /// + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Delete(string index, string type, string id, Func queryString = null); + + ///Represents a DELETE on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete.html /// ///The name of the index ///The type of the document ///The document ID - Task DeleteAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> DeleteAsync(string index, string type, string id, Func queryString = null); - ///DELETE /{index}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ///Represents a DELETE on /{index}/_query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices ///A query to restrict the operation specified with the Query DSL - ElasticsearchResponse DeleteByQuery(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /{index}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ElasticsearchResponse DeleteByQuery(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/_query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices ///A query to restrict the operation specified with the Query DSL - Task DeleteByQueryAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> DeleteByQueryAsync(string index, object body, Func queryString = null, object deserializationState = null); - ///DELETE /{index}/{type}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ ///Represents a DELETE on /{index}/_query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html + /// + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse DeleteByQuery(string index, object body, Func queryString = null); + + ///Represents a DELETE on /{index}/_query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices - ///A comma-separated list of types to restrict the operation ///A query to restrict the operation specified with the Query DSL - ElasticsearchResponse DeleteByQuery(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///DELETE /{index}/{type}/_query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html
+ Task> DeleteByQueryAsync(string index, object body, Func queryString = null); + + ///Represents a DELETE on /{index}/{type}/_query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices ///A comma-separated list of types to restrict the operation ///A query to restrict the operation specified with the Query DSL - Task DeleteByQueryAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse DeleteByQuery(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///HEAD /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a DELETE on /{index}/{type}/_query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html /// - ///The name of the index - ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> DeleteByQueryAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/{type}/_query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html + /// + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse DeleteByQuery(string index, string type, object body, Func queryString = null); + + ///Represents a DELETE on /{index}/{type}/_query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-delete-by-query.html + /// + ///A comma-separated list of indices to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of types to restrict the operation + ///A query to restrict the operation specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> DeleteByQueryAsync(string index, string type, object body, Func queryString = null); + + ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Exists(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID - ElasticsearchResponse Exists(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ Task> ExistsAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID - Task ExistsAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Exists(string index, string type, string id, Func queryString = null); + + ///Represents a HEAD on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ExistsAsync(string index, string type, string id, Func queryString = null); - ///GET /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// ///The name of the index ///The type of the document ///The document ID - ElasticsearchResponse ExplainGet(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ElasticsearchResponse ExplainGet(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// ///The name of the index ///The type of the document ///The document ID - Task ExplainGetAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ExplainGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html + /// + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ExplainGet(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_explain + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html + /// + ///The name of the index + ///The type of the document + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ExplainGetAsync(string index, string type, string id, Func queryString = null); - ///POST /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// ///The name of the index ///The type of the document ///The document ID ///The query definition using the Query DSL - ElasticsearchResponse Explain(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/{id}/_explain - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html
+ ElasticsearchResponse Explain(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html /// ///The name of the index ///The type of the document ///The document ID ///The query definition using the Query DSL - Task ExplainAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ExplainAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html + /// + ///The name of the index + ///The type of the document + ///The document ID + ///The query definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Explain(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_explain + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-explain.html + /// + ///The name of the index + ///The type of the document + ///The document ID + ///The query definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ExplainAsync(string index, string type, string id, object body, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID - ElasticsearchResponse Get(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ElasticsearchResponse Get(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID - Task GetAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> GetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/{id}/_source - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a GET on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Get(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> GetAsync(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document; use `_all` to fetch the first document matching the ID across all types + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// ///The name of the index ///The type of the document; use `_all` to fetch the first document matching the ID across all types ///The document ID - ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> GetSourceAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/{id}/_source - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html
+ ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html + /// + ///The name of the index + ///The type of the document; use `_all` to fetch the first document matching the ID across all types + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_source + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// ///The name of the index ///The type of the document; use `_all` to fetch the first document matching the ID across all types ///The document ID - Task GetSourceAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> GetSourceAsync(string index, string type, string id, Func queryString = null); + + ///Represents a POST on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html + /// + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Index(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a POST on /{index}/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document ///The document - ElasticsearchResponse Index(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ Task> IndexAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document ///The document - Task IndexAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Index(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html + /// + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndexAsync(string index, string type, object body, Func queryString = null); - ///POST /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a POST on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document ///Document ID ///The document - ElasticsearchResponse Index(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ElasticsearchResponse Index(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document ///Document ID ///The document - Task IndexAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndexAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a POST on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Index(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html + /// + ///The name of the index + ///The type of the document + ///Document ID ///The document - ElasticsearchResponse IndexPut(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndexAsync(string index, string type, string id, object body, Func queryString = null); - ///PUT /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a PUT on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document ///The document - Task IndexPutAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndexPut(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ ///Represents a PUT on /{index}/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html + /// + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndexPutAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document - ///Document ID ///The document - ElasticsearchResponse IndexPut(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndexPut(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html + /// + ///The name of the index + ///The type of the document + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /{index}/{type}/{id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html
+ Task> IndexPutAsync(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// ///The name of the index ///The type of the document ///Document ID ///The document - Task IndexPutAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndexPut(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///GET /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a PUT on /{index}/{type}/{id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - ElasticsearchResponse IndicesAnalyzeGetForAll(Func queryString = null); + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndexPutAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///GET /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a PUT on /{index}/{type}/{id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html + /// + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndexPut(string index, string type, string id, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/{id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-index_.html /// - Task IndicesAnalyzeGetForAllAsync(Func queryString = null); + ///The name of the index + ///The type of the document + ///Document ID + ///The document + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndexPutAsync(string index, string type, string id, object body, Func queryString = null); + + ///Represents a GET on /_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesAnalyzeGetForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesAnalyzeGetForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesAnalyzeGetForAll(Func queryString = null); + + ///Represents a GET on /_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesAnalyzeGetForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///The name of the index to scope the operation + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ElasticsearchResponse IndicesAnalyzeGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// ///The name of the index to scope the operation - ElasticsearchResponse IndicesAnalyzeGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesAnalyzeGetAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a GET on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// ///The name of the index to scope the operation - Task IndicesAnalyzeGetAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesAnalyzeGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///The name of the index to scope the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesAnalyzeGetAsync(string index, Func queryString = null); - ///POST /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a POST on /_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// ///The text on which the analysis should be performed - ElasticsearchResponse IndicesAnalyzeForAll(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ElasticsearchResponse IndicesAnalyzeForAll(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesAnalyzeForAllAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// ///The text on which the analysis should be performed - Task IndicesAnalyzeForAllAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesAnalyzeForAll(object body, Func queryString = null); + + ///Represents a POST on /_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesAnalyzeForAllAsync(object body, Func queryString = null); - ///POST /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ///Represents a POST on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// ///The name of the index to scope the operation ///The text on which the analysis should be performed - ElasticsearchResponse IndicesAnalyze(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_analyze - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html
+ ElasticsearchResponse IndicesAnalyze(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_analyze + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// ///The name of the index to scope the operation ///The text on which the analysis should be performed - Task IndicesAnalyzeAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesAnalyzeAsync(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a POST on /{index}/_analyze + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html /// - ElasticsearchResponse IndicesClearCacheForAll(Func queryString = null); + ///The name of the index to scope the operation + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesAnalyze(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_analyze + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-analyze.html + /// + ///The name of the index to scope the operation + ///The text on which the analysis should be performed + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesAnalyzeAsync(string index, object body, Func queryString = null); + + ///Represents a POST on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesClearCacheForAll(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesClearCacheForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesClearCacheForAll(Func queryString = null); + + ///Represents a POST on /_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesClearCacheForAllAsync(Func queryString = null); + + ///Represents a POST on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesClearCache(string index, Func queryString = null, object deserializationState = null); - ///POST /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a POST on /{index}/_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - Task IndicesClearCacheForAllAsync(Func queryString = null); + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesClearCacheAsync(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a POST on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// ///A comma-separated list of index name to limit the operation - ElasticsearchResponse IndicesClearCache(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesClearCache(string index, Func queryString = null); + + ///Represents a POST on /{index}/_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesClearCacheAsync(string index, Func queryString = null); + + ///Represents a GET on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesClearCacheGetForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesClearCacheGetForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesClearCacheGetForAll(Func queryString = null); + + ///Represents a GET on /_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesClearCacheGetForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesClearCacheGet(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a GET on /{index}/_cache/clear + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// ///A comma-separated list of index name to limit the operation - Task IndicesClearCacheAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ Task> IndicesClearCacheGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_cache/clear + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html + /// + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesClearCacheGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_cache/clear + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html /// - ElasticsearchResponse IndicesClearCacheGetForAll(Func queryString = null); + ///A comma-separated list of index name to limit the operation + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesClearCacheGetAsync(string index, Func queryString = null); - ///GET /_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a POST on /{index}/_close + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - Task IndicesClearCacheGetForAllAsync(Func queryString = null); + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesClose(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a POST on /{index}/_close + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - ///A comma-separated list of index name to limit the operation - ElasticsearchResponse IndicesClearCacheGet(string index, Func queryString = null); + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesCloseAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_cache/clear - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-clearcache.html
+ ///Represents a POST on /{index}/_close + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - ///A comma-separated list of index name to limit the operation - Task IndicesClearCacheGetAsync(string index, Func queryString = null); + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesClose(string index, Func queryString = null); + + ///Represents a POST on /{index}/_close + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_close - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ Task> IndicesCloseAsync(string index, Func queryString = null); + + ///Represents a PUT on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// ///The name of the index - ElasticsearchResponse IndicesClose(string index, Func queryString = null); + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_close - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ ElasticsearchResponse IndicesCreate(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// ///The name of the index - Task IndicesCloseAsync(string index, Func queryString = null); + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesCreateAsync(string index, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a PUT on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html + /// + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesCreate(string index, object body, Func queryString = null); + + ///Represents a PUT on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// ///The name of the index ///The configuration for the index (`settings` and `mappings`) - ElasticsearchResponse IndicesCreate(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesCreateAsync(string index, object body, Func queryString = null); - ///PUT /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a POST on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// ///The name of the index ///The configuration for the index (`settings` and `mappings`) - Task IndicesCreateAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesCreatePost(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ ///Represents a POST on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// ///The name of the index ///The configuration for the index (`settings` and `mappings`) - ElasticsearchResponse IndicesCreatePost(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html
+ Task> IndicesCreatePostAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html + /// + ///The name of the index + ///The configuration for the index (`settings` and `mappings`) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesCreatePost(string index, object body, Func queryString = null); + + ///Represents a POST on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html /// ///The name of the index ///The configuration for the index (`settings` and `mappings`) - Task IndicesCreatePostAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesCreatePostAsync(string index, object body, Func queryString = null); - ///DELETE /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html
+ ///Represents a DELETE on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html /// ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices - ElasticsearchResponse IndicesDelete(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html
+ ElasticsearchResponse IndicesDelete(string index, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html /// ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices - Task IndicesDeleteAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesDeleteAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html + /// + ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesDelete(string index, Func queryString = null); + + ///Represents a DELETE on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-index.html + /// + ///A comma-separated list of indices to delete; use `_all` or `*` string to delete all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesDeleteAsync(string index, Func queryString = null); - ///DELETE /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names (supports wildcards); use `_all` for all indices ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. - ElasticsearchResponse IndicesDeleteAlias(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesDeleteAlias(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesDeleteAliasAsync(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names (supports wildcards); use `_all` for all indices ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. - Task IndicesDeleteAliasAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesDeleteAlias(string index, string name, Func queryString = null); + + ///Represents a DELETE on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of aliases to delete (supports wildcards); use `_all` to delete all aliases for the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesDeleteAliasAsync(string index, string name, Func queryString = null); - ///DELETE /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html
+ ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html /// ///A comma-separated list of index names (supports wildcards); use `_all` for all indices ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. - ElasticsearchResponse IndicesDeleteMapping(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html
+ ElasticsearchResponse IndicesDeleteMapping(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html /// ///A comma-separated list of index names (supports wildcards); use `_all` for all indices ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. - Task IndicesDeleteMappingAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesDeleteMappingAsync(string index, string type, Func queryString = null, object deserializationState = null); - ///DELETE /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html + /// + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesDeleteMapping(string index, string type, Func queryString = null); + + ///Represents a DELETE on /{index}/{type}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-delete-mapping.html + /// + ///A comma-separated list of index names (supports wildcards); use `_all` for all indices + ///A comma-separated list of document types to delete (supports wildcards); use `_all` to delete all document types in the specified indices. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesDeleteMappingAsync(string index, string type, Func queryString = null); + + ///Represents a DELETE on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template - ElasticsearchResponse IndicesDeleteTemplateForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesDeleteTemplateForAll(string name, Func queryString = null, object deserializationState = null); - ///DELETE /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a DELETE on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template - Task IndicesDeleteTemplateForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesDeleteTemplateForAllAsync(string name, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesDeleteTemplateForAll(string name, Func queryString = null); + + ///Represents a DELETE on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesDeleteTemplateForAllAsync(string name, Func queryString = null); + + ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. - ElasticsearchResponse IndicesDeleteWarmer(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesDeleteWarmer(string index, string name, Func queryString = null, object deserializationState = null); - ///DELETE /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. - Task IndicesDeleteWarmerAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html
+ Task> IndicesDeleteWarmerAsync(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. + ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesDeleteWarmer(string index, string name, Func queryString = null); + + ///Represents a DELETE on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to delete warmers from (supports wildcards); use `_all` to perform the operation on all indices. + ///A comma-separated list of warmer names to delete (supports wildcards); use `_all` to delete all warmers in the specified indices. You must specify a name either in the uri or in the parameters. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesDeleteWarmerAsync(string index, string name, Func queryString = null); + + ///Represents a HEAD on /{index} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html + /// + ///A comma-separated list of indices to check + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesExists(string index, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html /// ///A comma-separated list of indices to check - ElasticsearchResponse IndicesExists(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesExistsAsync(string index, Func queryString = null, object deserializationState = null); - ///HEAD /{index} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html
+ ///Represents a HEAD on /{index} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html /// ///A comma-separated list of indices to check - Task IndicesExistsAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesExists(string index, Func queryString = null); + + ///Represents a HEAD on /{index} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-settings.html + /// + ///A comma-separated list of indices to check + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesExistsAsync(string index, Func queryString = null); - ///HEAD /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a HEAD on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of alias names to return - ElasticsearchResponse IndicesExistsAliasForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesExistsAliasForAll(string name, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of alias names to return - Task IndicesExistsAliasForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesExistsAliasForAllAsync(string name, Func queryString = null, object deserializationState = null); - ///HEAD /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a HEAD on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesExistsAliasForAll(string name, Func queryString = null); + + ///Represents a HEAD on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesExistsAliasForAllAsync(string name, Func queryString = null); + + ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases ///A comma-separated list of alias names to return - ElasticsearchResponse IndicesExistsAlias(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesExistsAlias(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases ///A comma-separated list of alias names to return - Task IndicesExistsAliasAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesExistsAliasAsync(string index, string name, Func queryString = null, object deserializationState = null); - ///HEAD /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - ElasticsearchResponse IndicesExistsAlias(string index, Func queryString = null); + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesExistsAlias(string index, string name, Func queryString = null); + + ///Represents a HEAD on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///HEAD /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesExistsAliasAsync(string index, string name, Func queryString = null); + + ///Represents a HEAD on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - Task IndicesExistsAliasAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesExistsAlias(string index, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index}/_alias + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesExistsAliasAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesExistsAlias(string index, Func queryString = null); + + ///Represents a HEAD on /{index}/_alias + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesExistsAliasAsync(string index, Func queryString = null); - ///HEAD /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a HEAD on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template - ElasticsearchResponse IndicesExistsTemplateForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ElasticsearchResponse IndicesExistsTemplateForAll(string name, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesExistsTemplateForAllAsync(string name, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template - Task IndicesExistsTemplateForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesExistsTemplateForAll(string name, Func queryString = null); + + ///Represents a HEAD on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesExistsTemplateForAllAsync(string name, Func queryString = null); - ///HEAD /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html
+ ///Represents a HEAD on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// ///A comma-separated list of index names; use `_all` to check the types across all indices ///A comma-separated list of document types to check - ElasticsearchResponse IndicesExistsType(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD /{index}/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html
+ ElasticsearchResponse IndicesExistsType(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on /{index}/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// ///A comma-separated list of index names; use `_all` to check the types across all indices ///A comma-separated list of document types to check - Task IndicesExistsTypeAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
- ///
- ElasticsearchResponse IndicesFlushForAll(Func queryString = null); + Task> IndicesExistsTypeAsync(string index, string type, Func queryString = null, object deserializationState = null); - ///POST /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a HEAD on /{index}/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html /// - Task IndicesFlushForAllAsync(Func queryString = null); - - ///POST /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///A comma-separated list of index names; use `_all` to check the types across all indices + ///A comma-separated list of document types to check + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesExistsType(string index, string type, Func queryString = null); + + ///Represents a HEAD on /{index}/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-types-exists.html + /// + ///A comma-separated list of index names; use `_all` to check the types across all indices + ///A comma-separated list of document types to check + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesExistsTypeAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesFlushForAll(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesFlushForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesFlushForAll(Func queryString = null); + + ///Represents a POST on /_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesFlushForAllAsync(Func queryString = null); + + ///Represents a POST on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// ///A comma-separated list of index names; use `_all` or empty string for all indices - ElasticsearchResponse IndicesFlush(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesFlush(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a POST on /{index}/_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// ///A comma-separated list of index names; use `_all` or empty string for all indices - Task IndicesFlushAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
- ///
- ElasticsearchResponse IndicesFlushGetForAll(Func queryString = null); + Task> IndicesFlushAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a POST on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesFlush(string index, Func queryString = null); + + ///Represents a POST on /{index}/_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// - Task IndicesFlushGetForAllAsync(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesFlushAsync(string index, Func queryString = null); + + ///Represents a GET on /_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesFlushGetForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesFlushGetForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesFlushGetForAll(Func queryString = null); + + ///Represents a GET on /_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesFlushGetForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ElasticsearchResponse IndicesFlushGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_flush + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// ///A comma-separated list of index names; use `_all` or empty string for all indices - ElasticsearchResponse IndicesFlushGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesFlushGetAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_flush - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html
+ ///Represents a GET on /{index}/_flush + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html /// ///A comma-separated list of index names; use `_all` or empty string for all indices - Task IndicesFlushGetAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesFlushGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_flush + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesFlushGetAsync(string index, Func queryString = null); + + ///Represents a GET on /_alias + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetAliasForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_alias + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetAliasForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_alias + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAliasForAll(Func queryString = null); + + ///Represents a GET on /_alias + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetAliasForAllAsync(Func queryString = null); + + ///Represents a GET on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesGetAliasForAll(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ElasticsearchResponse IndicesGetAliasForAll(Func queryString = null); + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesGetAliasForAllAsync(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAliasForAll(string name, Func queryString = null); + + ///Represents a GET on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - Task IndicesGetAliasForAllAsync(Func queryString = null); + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetAliasForAllAsync(string name, Func queryString = null); - ///GET /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// + ///A comma-separated list of index names to filter aliases ///A comma-separated list of alias names to return - ElasticsearchResponse IndicesGetAliasForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetAlias(string index, string name, Func queryString = null, object deserializationState = null); - ///GET /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetAliasAsync(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAlias(string index, string name, Func queryString = null); + + ///Represents a GET on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to return + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetAliasAsync(string index, string name, Func queryString = null); + + ///Represents a GET on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetAlias(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_alias + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetAliasAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_alias + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAlias(string index, Func queryString = null); + + ///Represents a GET on /{index}/_alias + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of alias names to return - Task IndicesGetAliasForAllAsync(string name, Func queryString = null); - - ///GET /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///A comma-separated list of index names to filter aliases + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetAliasAsync(string index, Func queryString = null); + + ///Represents a GET on /_aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetAliasesForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetAliasesForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAliasesForAll(Func queryString = null); + + ///Represents a GET on /_aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetAliasesForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to return - ElasticsearchResponse IndicesGetAlias(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesGetAliases(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - ///A comma-separated list of alias names to return - Task IndicesGetAliasAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesGetAliasesAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - ElasticsearchResponse IndicesGetAlias(string index, Func queryString = null); - - ///GET /{index}/_alias - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAliases(string index, Func queryString = null); + + ///Represents a GET on /{index}/_aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - Task IndicesGetAliasAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
- ///
- ElasticsearchResponse IndicesGetAliasesForAll(Func queryString = null); + Task> IndicesGetAliasesAsync(string index, Func queryString = null); - ///GET /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - Task IndicesGetAliasesForAllAsync(Func queryString = null); + ///A comma-separated list of index names to filter aliases + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetAliases(string index, string name, Func queryString = null, object deserializationState = null); - ///GET /{index}/_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - ElasticsearchResponse IndicesGetAliases(string index, Func queryString = null); + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetAliasesAsync(string index, string name, Func queryString = null, object deserializationState = null); - ///GET /{index}/_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /{index}/_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases - Task IndicesGetAliasesAsync(string index, Func queryString = null); - - ///GET /{index}/_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAliases(string index, string name, Func queryString = null); + + ///Represents a GET on /{index}/_aliases/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names to filter aliases ///A comma-separated list of alias names to filter - ElasticsearchResponse IndicesGetAliases(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /{index}/_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesGetAliasesAsync(string index, string name, Func queryString = null); + + ///Represents a GET on /_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// - ///A comma-separated list of index names to filter aliases ///A comma-separated list of alias names to filter - Task IndicesGetAliasesAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesGetAliasesForAll(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_aliases/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of alias names to filter - ElasticsearchResponse IndicesGetAliasesForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetAliasesForAllAsync(string name, Func queryString = null, object deserializationState = null); - ///GET /_aliases/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a GET on /_aliases/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of alias names to filter - Task IndicesGetAliasesForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetAliasesForAll(string name, Func queryString = null); + + ///Represents a GET on /_aliases/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of alias names to filter + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetAliasesForAllAsync(string name, Func queryString = null); + + ///Represents a GET on /_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetFieldMappingForAll(string field, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mapping/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ Task> IndicesGetFieldMappingForAllAsync(string field, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetFieldMappingForAll(string field, Func queryString = null); + + ///Represents a GET on /_mapping/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// ///A comma-separated list of fields - ElasticsearchResponse IndicesGetFieldMappingForAll(string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetFieldMappingForAllAsync(string field, Func queryString = null); - ///GET /_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// + ///A comma-separated list of index names ///A comma-separated list of fields - Task IndicesGetFieldMappingForAllAsync(string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetFieldMapping(string index, string field, Func queryString = null, object deserializationState = null); - ///GET /{index}/_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// ///A comma-separated list of index names ///A comma-separated list of fields - ElasticsearchResponse IndicesGetFieldMapping(string index, string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mapping/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ Task> IndicesGetFieldMappingAsync(string index, string field, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of index names + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetFieldMapping(string index, string field, Func queryString = null); + + ///Represents a GET on /{index}/_mapping/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// ///A comma-separated list of index names ///A comma-separated list of fields - Task IndicesGetFieldMappingAsync(string index, string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ Task> IndicesGetFieldMappingAsync(string index, string field, Func queryString = null); + + ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// ///A comma-separated list of document types ///A comma-separated list of fields - ElasticsearchResponse IndicesGetFieldMappingForAll(string type, string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetFieldMappingForAll(string type, string field, Func queryString = null, object deserializationState = null); - ///GET /_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// ///A comma-separated list of document types ///A comma-separated list of fields - Task IndicesGetFieldMappingForAllAsync(string type, string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ Task> IndicesGetFieldMappingForAllAsync(string type, string field, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ///A comma-separated list of index names ///A comma-separated list of document types ///A comma-separated list of fields - ElasticsearchResponse IndicesGetFieldMapping(string index, string type, string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetFieldMappingForAll(string type, string field, Func queryString = null); + + ///Represents a GET on /_mapping/{type}/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetFieldMappingForAllAsync(string type, string field, Func queryString = null); - ///GET /{index}/_mapping/{type}/field/{field} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html
+ ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// ///A comma-separated list of index names ///A comma-separated list of document types ///A comma-separated list of fields - Task IndicesGetFieldMappingAsync(string index, string type, string field, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ElasticsearchResponse IndicesGetFieldMapping(string index, string type, string field, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html /// - ElasticsearchResponse IndicesGetMappingForAll(Func queryString = null); + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetFieldMappingAsync(string index, string type, string field, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetFieldMapping(string index, string type, string field, Func queryString = null); + + ///Represents a GET on /{index}/_mapping/{type}/field/{field} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-field-mapping.html + /// + ///A comma-separated list of index names + ///A comma-separated list of document types + ///A comma-separated list of fields + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetFieldMappingAsync(string index, string type, string field, Func queryString = null); + + ///Represents a GET on /_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetMappingForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetMappingForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetMappingForAll(Func queryString = null); + + ///Represents a GET on /_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetMappingForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - Task IndicesGetMappingForAllAsync(Func queryString = null); + ///A comma-separated list of index names + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ElasticsearchResponse IndicesGetMapping(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names - ElasticsearchResponse IndicesGetMapping(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetMappingAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names - Task IndicesGetMappingAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetMapping(string index, Func queryString = null); + + ///Represents a GET on /{index}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///A comma-separated list of index names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetMappingAsync(string index, Func queryString = null); + + ///Represents a GET on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of document types - ElasticsearchResponse IndicesGetMappingForAll(string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetMappingForAll(string type, Func queryString = null, object deserializationState = null); - ///GET /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of document types - Task IndicesGetMappingForAllAsync(string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetMappingForAllAsync(string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetMappingForAll(string type, Func queryString = null); + + ///Represents a GET on /_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ///A comma-separated list of index names ///A comma-separated list of document types - ElasticsearchResponse IndicesGetMapping(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /{index}/_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetMappingForAllAsync(string type, Func queryString = null); + + ///Represents a GET on /{index}/_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names ///A comma-separated list of document types - Task IndicesGetMappingAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetMapping(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ElasticsearchResponse IndicesGetSettingsForAll(Func queryString = null); + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetMappingAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetMapping(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - Task IndicesGetSettingsForAllAsync(Func queryString = null); + ///A comma-separated list of index names + ///A comma-separated list of document types + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetMappingAsync(string index, string type, Func queryString = null); + + ///Represents a GET on /_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetSettingsForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetSettingsForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetSettingsForAll(Func queryString = null); + + ///Represents a GET on /_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetSettingsForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ElasticsearchResponse IndicesGetSettings(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesGetSettings(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetSettingsAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetSettings(string index, Func queryString = null); + + ///Represents a GET on /{index}/_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesGetSettingsAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /{index}/_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetSettingsAsync(string index, Func queryString = null); + + ///Represents a GET on /{index}/_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The name of the settings that should be included - ElasticsearchResponse IndicesGetSettings(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetSettings(string index, string name, Func queryString = null, object deserializationState = null); - ///GET /{index}/_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Represents a GET on /{index}/_settings/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The name of the settings that should be included - Task IndicesGetSettingsAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ Task> IndicesGetSettingsAsync(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The name of the settings that should be included - ElasticsearchResponse IndicesGetSettingsForAll(string name, Func queryString = null); - - ///GET /_settings/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetSettings(string index, string name, Func queryString = null); + + ///Represents a GET on /{index}/_settings/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The name of the settings that should be included - Task IndicesGetSettingsForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_template - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ Task> IndicesGetSettingsAsync(string index, string name, Func queryString = null); + + ///Represents a GET on /_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - ElasticsearchResponse IndicesGetTemplateForAll(Func queryString = null); + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_template - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ElasticsearchResponse IndicesGetSettingsForAll(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_settings/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html /// - Task IndicesGetTemplateForAllAsync(Func queryString = null); + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ Task> IndicesGetSettingsForAllAsync(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_settings/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetSettingsForAll(string name, Func queryString = null); + + ///Represents a GET on /_settings/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-get-mapping.html + /// + ///The name of the settings that should be included + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetSettingsForAllAsync(string name, Func queryString = null); + + ///Represents a GET on /_template + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetTemplateForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_template + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetTemplateForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_template + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetTemplateForAll(Func queryString = null); + + ///Represents a GET on /_template + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetTemplateForAllAsync(Func queryString = null); + + ///Represents a GET on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template - ElasticsearchResponse IndicesGetTemplateForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetTemplateForAll(string name, Func queryString = null, object deserializationState = null); - ///GET /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a GET on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template - Task IndicesGetTemplateForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesGetTemplateForAllAsync(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetTemplateForAll(string name, Func queryString = null); + + ///Represents a GET on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetTemplateForAllAsync(string name, Func queryString = null); + + ///Represents a GET on /_warmer + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetWarmerForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_warmer + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetWarmerForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_warmer + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetWarmerForAll(Func queryString = null); + + ///Represents a GET on /_warmer + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetWarmerForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_warmer + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - ElasticsearchResponse IndicesGetWarmerForAll(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ElasticsearchResponse IndicesGetWarmer(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_warmer + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - Task IndicesGetWarmerForAllAsync(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesGetWarmerAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_warmer + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetWarmer(string index, Func queryString = null); + + ///Represents a GET on /{index}/_warmer + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - ElasticsearchResponse IndicesGetWarmer(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetWarmerAsync(string index, Func queryString = null); - ///GET /{index}/_warmer - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices - Task IndicesGetWarmerAsync(string index, Func queryString = null); + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetWarmer(string index, string name, Func queryString = null, object deserializationState = null); - ///GET /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices ///The name of the warmer (supports wildcards); leave empty to get all warmers - ElasticsearchResponse IndicesGetWarmer(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesGetWarmerAsync(string index, string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetWarmer(string index, string name, Func queryString = null); + + ///Represents a GET on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices ///The name of the warmer (supports wildcards); leave empty to get all warmers - Task IndicesGetWarmerAsync(string index, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetWarmerAsync(string index, string name, Func queryString = null); + + ///Represents a GET on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesGetWarmerForAll(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesGetWarmerForAllAsync(string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetWarmerForAll(string name, Func queryString = null); + + ///Represents a GET on /_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///The name of the warmer (supports wildcards); leave empty to get all warmers - ElasticsearchResponse IndicesGetWarmerForAll(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesGetWarmerForAllAsync(string name, Func queryString = null); - ///GET /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types ///The name of the warmer (supports wildcards); leave empty to get all warmers - Task IndicesGetWarmerForAllAsync(string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ElasticsearchResponse IndicesGetWarmer(string index, string type, string name, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types ///The name of the warmer (supports wildcards); leave empty to get all warmers - ElasticsearchResponse IndicesGetWarmer(string index, string type, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesGetWarmerAsync(string index, string type, string name, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The name of the warmer (supports wildcards); leave empty to get all warmers + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesGetWarmer(string index, string type, string name, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to restrict the operation; use `_all` to perform the operation on all indices ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types ///The name of the warmer (supports wildcards); leave empty to get all warmers - Task IndicesGetWarmerAsync(string index, string type, string name, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_open - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ Task> IndicesGetWarmerAsync(string index, string type, string name, Func queryString = null); + + ///Represents a POST on /{index}/_open + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// ///The name of the index - ElasticsearchResponse IndicesOpen(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesOpen(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_open - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html
+ ///Represents a POST on /{index}/_open + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// ///The name of the index - Task IndicesOpenAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
- ///
- ElasticsearchResponse IndicesOptimizeForAll(Func queryString = null); + Task> IndicesOpenAsync(string index, Func queryString = null, object deserializationState = null); - ///POST /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a POST on /{index}/_open + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html /// - Task IndicesOptimizeForAllAsync(Func queryString = null); - - ///POST /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesOpen(string index, Func queryString = null); + + ///Represents a POST on /{index}/_open + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-open-close.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesOpenAsync(string index, Func queryString = null); + + ///Represents a POST on /_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesOptimizeForAll(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesOptimizeForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesOptimizeForAll(Func queryString = null); + + ///Represents a POST on /_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesOptimizeForAllAsync(Func queryString = null); + + ///Represents a POST on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesOptimize(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesOptimize(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a POST on /{index}/_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesOptimizeAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
- ///
- ElasticsearchResponse IndicesOptimizeGetForAll(Func queryString = null); + Task> IndicesOptimizeAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a POST on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesOptimize(string index, Func queryString = null); + + ///Represents a POST on /{index}/_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesOptimizeAsync(string index, Func queryString = null); + + ///Represents a GET on /_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesOptimizeGetForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesOptimizeGetForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesOptimizeGetForAll(Func queryString = null); + + ///Represents a GET on /_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesOptimizeGetForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html /// - Task IndicesOptimizeGetForAllAsync(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ElasticsearchResponse IndicesOptimizeGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_optimize + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesOptimizeGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesOptimizeGetAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_optimize - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html
+ ///Represents a GET on /{index}/_optimize + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesOptimizeGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_optimize + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-optimize.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesOptimizeGetAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesOptimizeGetAsync(string index, Func queryString = null); + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutAlias(string index, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - ElasticsearchResponse IndicesPutAlias(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesPutAliasAsync(string index, string name, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a PUT on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - Task IndicesPutAliasAsync(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutAlias(string index, string name, object body, Func queryString = null); + + ///Represents a PUT on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutAliasAsync(string index, string name, object body, Func queryString = null); + + ///Represents a PUT on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutAliasForAll(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesPutAliasForAllAsync(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutAliasForAll(string name, object body, Func queryString = null); + + ///Represents a PUT on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - ElasticsearchResponse IndicesPutAliasForAll(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesPutAliasForAllAsync(string name, object body, Func queryString = null); + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - Task IndicesPutAliasForAllAsync(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ElasticsearchResponse IndicesPutAliasPost(string index, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - ElasticsearchResponse IndicesPutAliasPost(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesPutAliasPostAsync(string index, string name, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /{index}/_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutAliasPost(string index, string name, object body, Func queryString = null); + + ///Represents a POST on /{index}/_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///A comma-separated list of index names the alias should point to (supports wildcards); use `_all` or omit to perform the operation on all indices. ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - Task IndicesPutAliasPostAsync(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutAliasPostAsync(string index, string name, object body, Func queryString = null); + + ///Represents a POST on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutAliasPostForAll(string name, object body, Func queryString = null, object deserializationState = null); - ///POST /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /_alias/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - ElasticsearchResponse IndicesPutAliasPostForAll(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_alias/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesPutAliasPostForAllAsync(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_alias/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The name of the alias to be created or updated + ///The settings for the alias, such as `routing` or `filter` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutAliasPostForAll(string name, object body, Func queryString = null); + + ///Represents a POST on /_alias/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///The name of the alias to be created or updated ///The settings for the alias, such as `routing` or `filter` - Task IndicesPutAliasPostForAllAsync(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutAliasPostForAllAsync(string name, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ElasticsearchResponse IndicesPutMapping(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html /// ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. ///The name of the document type ///The mapping definition - ElasticsearchResponse IndicesPutMapping(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesPutMappingAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutMapping(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html /// ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. ///The name of the document type ///The mapping definition - Task IndicesPutMappingAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutMappingAsync(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutMappingForAll(string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ Task> IndicesPutMappingForAllAsync(string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutMappingForAll(string type, object body, Func queryString = null); + + ///Represents a PUT on /_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html /// ///The name of the document type ///The mapping definition - ElasticsearchResponse IndicesPutMappingForAll(string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ Task> IndicesPutMappingForAllAsync(string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. ///The name of the document type ///The mapping definition - Task IndicesPutMappingForAllAsync(string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ElasticsearchResponse IndicesPutMappingPost(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html /// ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. ///The name of the document type ///The mapping definition - ElasticsearchResponse IndicesPutMappingPost(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesPutMappingPostAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/_mapping - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ///Represents a POST on /{index}/{type}/_mapping + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutMappingPost(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_mapping + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html /// ///A comma-separated list of index names the mapping should be added to (supports wildcards); use `_all` or omit to add the mapping on all indices. ///The name of the document type ///The mapping definition - Task IndicesPutMappingPostAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutMappingPostAsync(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutMappingPostForAll(string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mapping/{type} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesPutMappingPostForAllAsync(string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mapping/{type} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutMappingPostForAll(string type, object body, Func queryString = null); + + ///Represents a POST on /_mapping/{type} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html + /// + ///The name of the document type + ///The mapping definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ Task> IndicesPutMappingPostForAllAsync(string type, object body, Func queryString = null); + + ///Represents a PUT on /_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html /// - ///The name of the document type - ///The mapping definition - ElasticsearchResponse IndicesPutMappingPostForAll(string type, object body, Func queryString = null); + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_mapping/{type} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-put-mapping.html
+ ElasticsearchResponse IndicesPutSettingsForAll(object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html /// - ///The name of the document type - ///The mapping definition - Task IndicesPutMappingPostForAllAsync(string type, object body, Func queryString = null); + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ Task> IndicesPutSettingsForAllAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutSettingsForAll(object body, Func queryString = null); + + ///Represents a PUT on /_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html /// ///The index settings to be updated - ElasticsearchResponse IndicesPutSettingsForAll(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutSettingsForAllAsync(object body, Func queryString = null); - ///PUT /_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ ///Represents a PUT on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The index settings to be updated - Task IndicesPutSettingsForAllAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutSettings(string index, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ ///Represents a PUT on /{index}/_settings + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The index settings to be updated - ElasticsearchResponse IndicesPutSettings(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /{index}/_settings - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html
+ Task> IndicesPutSettingsAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/_settings + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///The index settings to be updated + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutSettings(string index, object body, Func queryString = null); + + ///Represents a PUT on /{index}/_settings + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-update-settings.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///The index settings to be updated - Task IndicesPutSettingsAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutSettingsAsync(string index, object body, Func queryString = null); + + ///Represents a PUT on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutTemplateForAll(string name, object body, Func queryString = null, object deserializationState = null); - ///PUT /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a PUT on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesPutTemplateForAllAsync(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutTemplateForAll(string name, object body, Func queryString = null); + + ///Represents a PUT on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template ///The template definition - ElasticsearchResponse IndicesPutTemplateForAll(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ Task> IndicesPutTemplateForAllAsync(string name, object body, Func queryString = null); + + ///Represents a POST on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template ///The template definition - Task IndicesPutTemplateForAllAsync(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutTemplatePostForAll(string name, object body, Func queryString = null, object deserializationState = null); - ///POST /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ ///Represents a POST on /_template/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template ///The template definition - ElasticsearchResponse IndicesPutTemplatePostForAll(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_template/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html
+ Task> IndicesPutTemplatePostForAllAsync(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_template/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html + /// + ///The name of the template + ///The template definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutTemplatePostForAll(string name, object body, Func queryString = null); + + ///Represents a POST on /_template/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-templates.html /// ///The name of the template ///The template definition - Task IndicesPutTemplatePostForAllAsync(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutTemplatePostForAllAsync(string name, object body, Func queryString = null); + + ///Represents a PUT on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutWarmerForAll(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerForAllAsync(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutWarmerForAll(string name, object body, Func queryString = null); + + ///Represents a PUT on /_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutWarmerForAllAsync(string name, object body, Func queryString = null); + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - ElasticsearchResponse IndicesPutWarmerForAll(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ElasticsearchResponse IndicesPutWarmer(string index, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - Task IndicesPutWarmerForAllAsync(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerAsync(string index, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutWarmer(string index, string name, object body, Func queryString = null); + + ///Represents a PUT on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - ElasticsearchResponse IndicesPutWarmer(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutWarmerAsync(string index, string name, object body, Func queryString = null); - ///PUT /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - Task IndicesPutWarmerAsync(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutWarmer(string index, string type, string name, object body, Func queryString = null, object deserializationState = null); - ///PUT /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - ElasticsearchResponse IndicesPutWarmer(string index, string type, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerAsync(string index, string type, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutWarmer(string index, string type, string name, object body, Func queryString = null); + + ///Represents a PUT on /{index}/{type}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - Task IndicesPutWarmerAsync(string index, string type, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutWarmerAsync(string index, string type, string name, object body, Func queryString = null); + + ///Represents a POST on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutWarmerPostForAll(string name, object body, Func queryString = null, object deserializationState = null); - ///POST /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - ElasticsearchResponse IndicesPutWarmerPostForAll(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerPostForAllAsync(string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutWarmerPostForAll(string name, object body, Func queryString = null); + + ///Represents a POST on /_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - Task IndicesPutWarmerPostForAllAsync(string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerPostForAllAsync(string name, object body, Func queryString = null); + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - ElasticsearchResponse IndicesPutWarmerPost(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesPutWarmerPost(string index, string name, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ ///Represents a POST on /{index}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - Task IndicesPutWarmerPostAsync(string index, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerPostAsync(string index, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices - ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - ElasticsearchResponse IndicesPutWarmerPost(string index, string type, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutWarmerPost(string index, string name, object body, Func queryString = null); + + ///Represents a POST on /{index}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/{type}/_warmer/{name} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html
+ Task> IndicesPutWarmerPostAsync(string index, string name, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types ///The name of the warmer ///The search request definition for the warmer (query, filters, facets, sorting, etc) - Task IndicesPutWarmerPostAsync(string index, string type, string name, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
- ///
- ElasticsearchResponse IndicesRefreshForAll(Func queryString = null); + ElasticsearchResponse IndicesPutWarmerPost(string index, string type, string name, object body, Func queryString = null, object deserializationState = null); - ///POST /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html /// - Task IndicesRefreshForAllAsync(Func queryString = null); + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ Task> IndicesPutWarmerPostAsync(string index, string type, string name, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesPutWarmerPost(string index, string type, string name, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_warmer/{name} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-warmers.html + /// + ///A comma-separated list of index names to register the warmer for; use `_all` or omit to perform the operation on all indices + ///A comma-separated list of document types to register the warmer for; leave empty to perform the operation on all types + ///The name of the warmer + ///The search request definition for the warmer (query, filters, facets, sorting, etc) + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesPutWarmerPostAsync(string index, string type, string name, object body, Func queryString = null); + + ///Represents a POST on /_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesRefreshForAll(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesRefreshForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesRefreshForAll(Func queryString = null); + + ///Represents a POST on /_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesRefreshForAllAsync(Func queryString = null); + + ///Represents a POST on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesRefresh(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesRefresh(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index}/_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesRefreshAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
- ///
- ElasticsearchResponse IndicesRefreshGetForAll(Func queryString = null); + Task> IndicesRefreshAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Represents a POST on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// - Task IndicesRefreshGetForAllAsync(Func queryString = null); - - ///GET /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesRefresh(string index, Func queryString = null); + + ///Represents a POST on /{index}/_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesRefreshGet(string index, Func queryString = null); - - ///GET /{index}/_refresh - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesRefreshAsync(string index, Func queryString = null); + + ///Represents a GET on /_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesRefreshGetForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesRefreshGetForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesRefreshGetForAll(Func queryString = null); + + ///Represents a GET on /_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesRefreshGetForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesRefreshGetAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
- ///
- ElasticsearchResponse IndicesSegmentsForAll(Func queryString = null); + ElasticsearchResponse IndicesRefreshGet(string index, Func queryString = null, object deserializationState = null); - ///GET /_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ ///Represents a GET on /{index}/_refresh + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// - Task IndicesSegmentsForAllAsync(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ Task> IndicesRefreshGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_refresh + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesSegments(string index, Func queryString = null); - - ///GET /{index}/_segments - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesRefreshGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_refresh + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-refresh.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesSegmentsAsync(string index, Func queryString = null); - - ///POST /_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesRefreshGetAsync(string index, Func queryString = null); + + ///Represents a GET on /_segments + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesSegmentsForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_segments + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesSegmentsForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_segments + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesSegmentsForAll(Func queryString = null); + + ///Represents a GET on /_segments + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesSegmentsForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_segments + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html /// - ElasticsearchResponse IndicesSnapshotIndexForAll(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ElasticsearchResponse IndicesSegments(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_segments + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html /// - Task IndicesSnapshotIndexForAllAsync(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ Task> IndicesSegmentsAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_segments + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesSegments(string index, Func queryString = null); + + ///Represents a GET on /{index}/_segments + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-segments.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesSegmentsAsync(string index, Func queryString = null); + + ///Represents a POST on /_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesSnapshotIndexForAll(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_gateway/snapshot + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesSnapshotIndexForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesSnapshotIndexForAll(Func queryString = null); + + ///Represents a POST on /_gateway/snapshot + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesSnapshotIndexForAllAsync(Func queryString = null); + + ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html /// ///A comma-separated list of index names; use `_all` or empty string for all indices - ElasticsearchResponse IndicesSnapshotIndex(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesSnapshotIndex(string index, Func queryString = null, object deserializationState = null); - ///POST /{index}/_gateway/snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html
+ ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html /// ///A comma-separated list of index names; use `_all` or empty string for all indices - Task IndicesSnapshotIndexAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
- ///
- ElasticsearchResponse IndicesStatsForAll(Func queryString = null); + Task> IndicesSnapshotIndexAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesSnapshotIndex(string index, Func queryString = null); + + ///Represents a POST on /{index}/_gateway/snapshot + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-gateway-snapshot.html + /// + ///A comma-separated list of index names; use `_all` or empty string for all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesSnapshotIndexAsync(string index, Func queryString = null); + + ///Represents a GET on /_stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesStatsForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesStatsForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesStatsForAll(Func queryString = null); + + ///Represents a GET on /_stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesStatsForAllAsync(Func queryString = null); + + ///Represents a GET on /_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// - Task IndicesStatsForAllAsync(Func queryString = null); + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ElasticsearchResponse IndicesStatsForAll(string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// ///Limit the information returned the specific metrics. - ElasticsearchResponse IndicesStatsForAll(string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesStatsForAllAsync(string metric, Func queryString = null, object deserializationState = null); - ///GET /_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a GET on /_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// ///Limit the information returned the specific metrics. - Task IndicesStatsForAllAsync(string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesStatsForAll(string metric, Func queryString = null); + + ///Represents a GET on /_stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /{index}/_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ Task> IndicesStatsForAllAsync(string metric, Func queryString = null); + + ///Represents a GET on /{index}/_stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesStats(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesStats(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ ///Represents a GET on /{index}/_stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesStatsAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ Task> IndicesStatsAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ///Limit the information returned the specific metrics. - ElasticsearchResponse IndicesStats(string index, string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesStats(string index, Func queryString = null); + + ///Represents a GET on /{index}/_stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /{index}/_stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html
+ Task> IndicesStatsAsync(string index, Func queryString = null); + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices ///Limit the information returned the specific metrics. - Task IndicesStatsAsync(string index, string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesStats(string index, string metric, Func queryString = null, object deserializationState = null); - ///GET /_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ///Represents a GET on /{index}/_stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// - ElasticsearchResponse IndicesStatusForAll(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ Task> IndicesStatsAsync(string index, string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesStats(string index, string metric, Func queryString = null); + + ///Represents a GET on /{index}/_stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-stats.html /// - Task IndicesStatusForAllAsync(Func queryString = null); + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Limit the information returned the specific metrics. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesStatsAsync(string index, string metric, Func queryString = null); + + ///Represents a GET on /_status + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesStatusForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_status + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesStatusForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_status + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesStatusForAll(Func queryString = null); + + ///Represents a GET on /_status + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesStatusForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_status + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ElasticsearchResponse IndicesStatus(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_status + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesStatus(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesStatusAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_status - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html
+ ///Represents a GET on /{index}/_status + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html + /// + ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesStatus(string index, Func queryString = null); + + ///Represents a GET on /{index}/_status + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-status.html /// ///A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices - Task IndicesStatusAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ Task> IndicesStatusAsync(string index, Func queryString = null); + + ///Represents a POST on /_aliases + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///The definition of `actions` to perform - ElasticsearchResponse IndicesUpdateAliasesForAll(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesUpdateAliasesForAll(object body, Func queryString = null, object deserializationState = null); - ///POST /_aliases - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html
+ ///Represents a POST on /_aliases + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html /// ///The definition of `actions` to perform - Task IndicesUpdateAliasesForAllAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ Task> IndicesUpdateAliasesForAllAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_aliases + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The definition of `actions` to perform + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesUpdateAliasesForAll(object body, Func queryString = null); + + ///Represents a POST on /_aliases + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-aliases.html + /// + ///The definition of `actions` to perform + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesUpdateAliasesForAllAsync(object body, Func queryString = null); + + ///Represents a GET on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesValidateQueryGetForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesValidateQueryGetForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesValidateQueryGetForAll(Func queryString = null); + + ///Represents a GET on /_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesValidateQueryGetForAllAsync(Func queryString = null); + + ///Represents a GET on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// - ElasticsearchResponse IndicesValidateQueryGetForAll(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ElasticsearchResponse IndicesValidateQueryGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// - Task IndicesValidateQueryGetForAllAsync(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ Task> IndicesValidateQueryGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesValidateQueryGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse IndicesValidateQueryGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesValidateQueryGetAsync(string index, Func queryString = null); - ///GET /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - Task IndicesValidateQueryGetAsync(string index, Func queryString = null); + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesValidateQueryGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - ElasticsearchResponse IndicesValidateQueryGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ Task> IndicesValidateQueryGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesValidateQueryGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types - Task IndicesValidateQueryGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesValidateQueryGetAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ElasticsearchResponse IndicesValidateQueryForAll(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///The query definition specified with the Query DSL - ElasticsearchResponse IndicesValidateQueryForAll(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> IndicesValidateQueryForAllAsync(object body, Func queryString = null, object deserializationState = null); - ///POST /_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a POST on /_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesValidateQueryForAll(object body, Func queryString = null); + + ///Represents a POST on /_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///The query definition specified with the Query DSL - Task IndicesValidateQueryForAllAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ Task> IndicesValidateQueryForAllAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///The query definition specified with the Query DSL - ElasticsearchResponse IndicesValidateQuery(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse IndicesValidateQuery(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a POST on /{index}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///The query definition specified with the Query DSL - Task IndicesValidateQueryAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ Task> IndicesValidateQueryAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types ///The query definition specified with the Query DSL - ElasticsearchResponse IndicesValidateQuery(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesValidateQuery(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesValidateQueryAsync(string index, object body, Func queryString = null); - ///POST /{index}/{type}/_validate/query - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html
+ ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types ///The query definition specified with the Query DSL - Task IndicesValidateQueryAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET / - ///
http://www.elasticsearch.org/guide/
- ///
- ElasticsearchResponse Info(Func queryString = null); + ElasticsearchResponse IndicesValidateQuery(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///GET / - ///
http://www.elasticsearch.org/guide/
+ ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html /// - Task InfoAsync(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ Task> IndicesValidateQueryAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse IndicesValidateQuery(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_validate/query + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-validate.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to restrict the operation; leave empty to perform the operation on all types + ///The query definition specified with the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> IndicesValidateQueryAsync(string index, string type, object body, Func queryString = null); + + ///Represents a GET on / + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Info(Func queryString = null, object deserializationState = null); + + ///Represents a GET on / + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> InfoAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on / + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Info(Func queryString = null); + + ///Represents a GET on / + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> InfoAsync(Func queryString = null); + + ///Represents a GET on /_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MgetGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MgetGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MgetGet(Func queryString = null); + + ///Represents a GET on /_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MgetGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// - ElasticsearchResponse MgetGet(Func queryString = null); + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ElasticsearchResponse MgetGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// - Task MgetGetAsync(Func queryString = null); + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ Task> MgetGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MgetGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index - ElasticsearchResponse MgetGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MgetGetAsync(string index, Func queryString = null); - ///GET /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a GET on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index - Task MgetGetAsync(string index, Func queryString = null); + ///The type of the document + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MgetGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a GET on /{index}/{type}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index ///The type of the document - ElasticsearchResponse MgetGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ Task> MgetGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///The type of the document + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MgetGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index ///The type of the document - Task MgetGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MgetGetAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mget(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MgetAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mget(object body, Func queryString = null); + + ///Represents a POST on /_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MgetAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mget(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ Task> MgetAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html + /// + ///The name of the index + ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mget(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// + ///The name of the index ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - ElasticsearchResponse Mget(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MgetAsync(string index, object body, Func queryString = null); - ///POST /_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a POST on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// + ///The name of the index + ///The type of the document ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - Task MgetAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ElasticsearchResponse Mget(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index + ///The type of the document ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - ElasticsearchResponse Mget(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ Task> MgetAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index + ///The type of the document ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - Task MgetAsync(string index, object body, Func queryString = null); - - ///POST /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mget(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_mget + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html /// ///The name of the index ///The type of the document ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - ElasticsearchResponse Mget(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MgetAsync(string index, string type, object body, Func queryString = null); - ///POST /{index}/{type}/_mget - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-get.html
+ ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html /// ///The name of the index - ///The type of the document - ///Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. - Task MgetAsync(string index, string type, object body, Func queryString = null); + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ElasticsearchResponse MltGet(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID - ElasticsearchResponse MltGet(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MltGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MltGet(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_mlt + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID - Task MltGetAsync(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ Task> MltGetAsync(string index, string type, string id, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID ///A specific search request definition - ElasticsearchResponse Mlt(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mlt(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/{id}/_mlt - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html
+ ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html /// ///The name of the index ///The type of the document (use `_all` to fetch the first document matching the ID across all types) ///The document ID ///A specific search request definition - Task MltAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> MltAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///A specific search request definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mlt(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_mlt + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-more-like-this.html + /// + ///The name of the index + ///The type of the document (use `_all` to fetch the first document matching the ID across all types) + ///The document ID + ///A specific search request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MltAsync(string index, string type, string id, object body, Func queryString = null); + + ///Represents a GET on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MpercolateGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MpercolateGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MpercolateGet(Func queryString = null); + + ///Represents a GET on /_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MpercolateGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ElasticsearchResponse MpercolateGet(Func queryString = null); + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ElasticsearchResponse MpercolateGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - Task MpercolateGetAsync(Func queryString = null); + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> MpercolateGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MpercolateGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default - ElasticsearchResponse MpercolateGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MpercolateGetAsync(string index, Func queryString = null); - ///GET /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default - Task MpercolateGetAsync(string index, Func queryString = null); + ///The type of the document being percolated to use as default. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MpercolateGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default ///The type of the document being percolated to use as default. - ElasticsearchResponse MpercolateGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> MpercolateGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MpercolateGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default ///The type of the document being percolated to use as default. - Task MpercolateGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MpercolateGetAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mpercolate(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> MpercolateAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mpercolate(object body, Func queryString = null); + + ///Represents a POST on /_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The percolate request definitions (header & body pair), separated by newlines - ElasticsearchResponse Mpercolate(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MpercolateAsync(object body, Func queryString = null); - ///POST /_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// + ///The index of the document being count percolated to use as default ///The percolate request definitions (header & body pair), separated by newlines - Task MpercolateAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mpercolate(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default ///The percolate request definitions (header & body pair), separated by newlines - ElasticsearchResponse Mpercolate(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> MpercolateAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mpercolate(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default ///The percolate request definitions (header & body pair), separated by newlines - Task MpercolateAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> MpercolateAsync(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default ///The type of the document being percolated to use as default. ///The percolate request definitions (header & body pair), separated by newlines - ElasticsearchResponse Mpercolate(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mpercolate(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/_mpercolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being count percolated to use as default ///The type of the document being percolated to use as default. ///The percolate request definitions (header & body pair), separated by newlines - Task MpercolateAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ Task> MpercolateAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mpercolate(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_mpercolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being count percolated to use as default + ///The type of the document being percolated to use as default. + ///The percolate request definitions (header & body pair), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MpercolateAsync(string index, string type, object body, Func queryString = null); + + ///Represents a GET on /_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MsearchGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MsearchGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MsearchGet(Func queryString = null); + + ///Represents a GET on /_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MsearchGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// - ElasticsearchResponse MsearchGet(Func queryString = null); + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ElasticsearchResponse MsearchGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// - Task MsearchGetAsync(Func queryString = null); + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ Task> MsearchGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MsearchGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default - ElasticsearchResponse MsearchGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MsearchGetAsync(string index, Func queryString = null); - ///GET /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default - Task MsearchGetAsync(string index, Func queryString = null); + ///A comma-separated list of document types to use as default + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MsearchGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a GET on /{index}/{type}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default ///A comma-separated list of document types to use as default - ElasticsearchResponse MsearchGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ Task> MsearchGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MsearchGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default ///A comma-separated list of document types to use as default - Task MsearchGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MsearchGetAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Msearch(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ Task> MsearchAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Msearch(object body, Func queryString = null); + + ///Represents a POST on /_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///The request definitions (metadata-search request definition pairs), separated by newlines - ElasticsearchResponse Msearch(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MsearchAsync(object body, Func queryString = null); - ///POST /_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a POST on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// + ///A comma-separated list of index names to use as default ///The request definitions (metadata-search request definition pairs), separated by newlines - Task MsearchAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Msearch(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a POST on /{index}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default ///The request definitions (metadata-search request definition pairs), separated by newlines - ElasticsearchResponse Msearch(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ Task> MsearchAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Msearch(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default ///The request definitions (metadata-search request definition pairs), separated by newlines - Task MsearchAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ Task> MsearchAsync(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default ///A comma-separated list of document types to use as default ///The request definitions (metadata-search request definition pairs), separated by newlines - ElasticsearchResponse Msearch(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Msearch(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/_msearch - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html
+ ///Represents a POST on /{index}/{type}/_msearch + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html /// ///A comma-separated list of index names to use as default ///A comma-separated list of document types to use as default ///The request definitions (metadata-search request definition pairs), separated by newlines - Task MsearchAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ Task> MsearchAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Msearch(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_msearch + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-multi-search.html + /// + ///A comma-separated list of index names to use as default + ///A comma-separated list of document types to use as default + ///The request definitions (metadata-search request definition pairs), separated by newlines + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MsearchAsync(string index, string type, object body, Func queryString = null); + + ///Represents a GET on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MtermvectorsGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MtermvectorsGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MtermvectorsGet(Func queryString = null); + + ///Represents a GET on /_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MtermvectorsGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// - ElasticsearchResponse MtermvectorsGet(Func queryString = null); + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ElasticsearchResponse MtermvectorsGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// - Task MtermvectorsGetAsync(Func queryString = null); + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ Task> MtermvectorsGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MtermvectorsGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. - ElasticsearchResponse MtermvectorsGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MtermvectorsGetAsync(string index, Func queryString = null); - ///GET /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. - Task MtermvectorsGetAsync(string index, Func queryString = null); + ///The type of the document. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse MtermvectorsGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. ///The type of the document. - ElasticsearchResponse MtermvectorsGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ Task> MtermvectorsGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse MtermvectorsGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. ///The type of the document. - Task MtermvectorsGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MtermvectorsGetAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ElasticsearchResponse Mtermvectors(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - ElasticsearchResponse Mtermvectors(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> MtermvectorsAsync(object body, Func queryString = null, object deserializationState = null); - ///POST /_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a POST on /_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mtermvectors(object body, Func queryString = null); + + ///Represents a POST on /_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - Task MtermvectorsAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ Task> MtermvectorsAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - ElasticsearchResponse Mtermvectors(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Mtermvectors(string index, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a POST on /{index}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - Task MtermvectorsAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ Task> MtermvectorsAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. - ///The type of the document. ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - ElasticsearchResponse Mtermvectors(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mtermvectors(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MtermvectorsAsync(string index, object body, Func queryString = null); - ///POST /{index}/{type}/_mtermvectors - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html
+ ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. - Task MtermvectorsAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/nodes/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
- ///
- ElasticsearchResponse NodesHotThreadsForAll(Func queryString = null); + ElasticsearchResponse Mtermvectors(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///GET /_cluster/nodes/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html /// - Task NodesHotThreadsForAllAsync(Func queryString = null); + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_cluster/nodes/{node_id}/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ Task> MtermvectorsAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Mtermvectors(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_mtermvectors + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-multi-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///Define ids, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> MtermvectorsAsync(string index, string type, object body, Func queryString = null); + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesHotThreadsForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesHotThreadsForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesHotThreadsForAll(Func queryString = null); + + ///Represents a GET on /_cluster/nodes/hotthreads + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesHotThreadsForAllAsync(Func queryString = null); + + ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ElasticsearchResponse NodesHotThreads(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesHotThreads(string node_id, Func queryString = null, object deserializationState = null); - ///GET /_cluster/nodes/{node_id}/hotthreads - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html
+ ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - Task NodesHotThreadsAsync(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
- ///
- ElasticsearchResponse NodesInfoForAll(Func queryString = null); + Task> NodesHotThreadsAsync(string node_id, Func queryString = null, object deserializationState = null); - ///GET /_nodes - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesHotThreads(string node_id, Func queryString = null); + + ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-hot-threads.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesHotThreadsAsync(string node_id, Func queryString = null); + + ///Represents a GET on /_nodes + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesInfoForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesInfoForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesInfoForAll(Func queryString = null); + + ///Represents a GET on /_nodes + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesInfoForAllAsync(Func queryString = null); + + ///Represents a GET on /_nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// - Task NodesInfoForAllAsync(Func queryString = null); + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ElasticsearchResponse NodesInfo(string node_id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{node_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ElasticsearchResponse NodesInfo(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesInfoAsync(string node_id, Func queryString = null, object deserializationState = null); - ///GET /_nodes/{node_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_nodes/{node_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesInfo(string node_id, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - Task NodesInfoAsync(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_nodes/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ Task> NodesInfoAsync(string node_id, Func queryString = null); + + ///Represents a GET on /_nodes/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// ///A comma-separated list of metrics you wish returned. Leave empty to return all. - ElasticsearchResponse NodesInfoForAll(string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesInfoForAll(string metric, Func queryString = null, object deserializationState = null); - ///GET /_nodes/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ ///Represents a GET on /_nodes/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// ///A comma-separated list of metrics you wish returned. Leave empty to return all. - Task NodesInfoForAllAsync(string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_nodes/{node_id}/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ Task> NodesInfoForAllAsync(string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes ///A comma-separated list of metrics you wish returned. Leave empty to return all. - ElasticsearchResponse NodesInfo(string node_id, string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesInfoForAll(string metric, Func queryString = null); + + ///Represents a GET on /_nodes/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_nodes/{node_id}/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html
+ Task> NodesInfoForAllAsync(string metric, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes ///A comma-separated list of metrics you wish returned. Leave empty to return all. - Task NodesInfoAsync(string node_id, string metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesInfo(string node_id, string metric, Func queryString = null, object deserializationState = null); - ///POST /_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html /// - ElasticsearchResponse NodesShutdownForAll(Func queryString = null); + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ Task> NodesInfoAsync(string node_id, string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesInfo(string node_id, string metric, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-info.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///A comma-separated list of metrics you wish returned. Leave empty to return all. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesInfoAsync(string node_id, string metric, Func queryString = null); + + ///Represents a POST on /_shutdown + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesShutdownForAll(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_shutdown + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesShutdownForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_shutdown + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesShutdownForAll(Func queryString = null); + + ///Represents a POST on /_shutdown + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesShutdownForAllAsync(Func queryString = null); + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html /// - Task NodesShutdownForAllAsync(Func queryString = null); + ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_cluster/nodes/{node_id}/_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ElasticsearchResponse NodesShutdown(string node_id, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html /// ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes - ElasticsearchResponse NodesShutdown(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesShutdownAsync(string node_id, Func queryString = null, object deserializationState = null); - ///POST /_cluster/nodes/{node_id}/_shutdown - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html
+ ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html /// ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes - Task NodesShutdownAsync(string node_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesShutdown(string node_id, Func queryString = null); + + ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-shutdown.html + /// + ///A comma-separated list of node IDs or names to perform the operation on; use `_local` to perform the operation on the node you're connected to, leave empty to perform the operation on all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesShutdownAsync(string node_id, Func queryString = null); + + ///Represents a GET on /_nodes/stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesStatsForAll(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesStatsForAllAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesStatsForAll(Func queryString = null); + + ///Represents a GET on /_nodes/stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesStatsForAllAsync(Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesStats(string node_id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_nodes/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ Task> NodesStatsAsync(string node_id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesStats(string node_id, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/stats + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesStatsAsync(string node_id, Func queryString = null); + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesStatsForAll(string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesStatsForAllAsync(string metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesStatsForAll(string metric, Func queryString = null); + + ///Represents a GET on /_nodes/stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// - ElasticsearchResponse NodesStatsForAll(Func queryString = null); + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_nodes/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ Task> NodesStatsForAllAsync(string metric, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// - Task NodesStatsForAllAsync(Func queryString = null); + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesStats(string node_id, string metric, Func queryString = null, object deserializationState = null); - ///GET /_nodes/{node_id}/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ElasticsearchResponse NodesStats(string node_id, Func queryString = null); + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesStatsAsync(string node_id, string metric, Func queryString = null, object deserializationState = null); - ///GET /_nodes/{node_id}/stats - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - Task NodesStatsAsync(string node_id, Func queryString = null); + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesStats(string node_id, string metric, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/stats/{metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesStatsAsync(string node_id, string metric, Func queryString = null); + + ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse NodesStatsForAll(string metric, string index_metric, Func queryString = null, object deserializationState = null); - ///GET /_nodes/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// ///Limit the information returned to the specified metrics - ElasticsearchResponse NodesStatsForAll(string metric, Func queryString = null); + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> NodesStatsForAllAsync(string metric, string index_metric, Func queryString = null, object deserializationState = null); - ///GET /_nodes/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// ///Limit the information returned to the specified metrics - Task NodesStatsForAllAsync(string metric, Func queryString = null); + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesStatsForAll(string metric, string index_metric, Func queryString = null); + + ///Represents a GET on /_nodes/stats/{metric}/{index_metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_nodes/{node_id}/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ Task> NodesStatsForAllAsync(string metric, string index_metric, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes ///Limit the information returned to the specified metrics - ElasticsearchResponse NodesStats(string node_id, string metric, Func queryString = null); + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_nodes/{node_id}/stats/{metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ElasticsearchResponse NodesStats(string node_id, string metric, string index_metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes ///Limit the information returned to the specified metrics - Task NodesStatsAsync(string node_id, string metric, Func queryString = null); + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_nodes/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ Task> NodesStatsAsync(string node_id, string metric, string index_metric, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html + /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes + ///Limit the information returned to the specified metrics + ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse NodesStats(string node_id, string metric, string index_metric, Func queryString = null); + + ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html /// + ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes ///Limit the information returned to the specified metrics ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - ElasticsearchResponse NodesStatsForAll(string metric, string index_metric, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> NodesStatsAsync(string node_id, string metric, string index_metric, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse PercolateGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /_nodes/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/{type}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> PercolateGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse PercolateGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - Task NodesStatsForAllAsync(string metric, string index_metric, Func queryString = null); + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_nodes/{node_id}/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
- ///
- ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - ElasticsearchResponse NodesStats(string node_id, string metric, string index_metric, Func queryString = null); + Task> PercolateGetAsync(string index, string type, Func queryString = null); - ///GET /_nodes/{node_id}/stats/{metric}/{index_metric} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/cluster-nodes-stats.html
+ ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ///A comma-separated list of node IDs or names to limit the returned information; use `_local` to return information from the node you're connecting to, leave empty to get information from all nodes - ///Limit the information returned to the specified metrics - ///Limit the information returned for `indices` metric to the specific index metrics. Isn't used if `indices` (or `all`) metric isn't specified. - Task NodesStatsAsync(string node_id, string metric, string index_metric, Func queryString = null); + ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ElasticsearchResponse PercolateGet(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. - ElasticsearchResponse PercolateGet(string index, string type, Func queryString = null); + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> PercolateGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. - Task PercolateGetAsync(string index, string type, Func queryString = null); - - ///GET /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse PercolateGet(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - ElasticsearchResponse PercolateGet(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> PercolateGetAsync(string index, string type, string id, Func queryString = null); - ///GET /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. - ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. - Task PercolateGetAsync(string index, string type, string id, Func queryString = null); + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ElasticsearchResponse Percolate(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. ///The percolator request definition using the percolate DSL - ElasticsearchResponse Percolate(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> PercolateAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/{type}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. ///The percolator request definition using the percolate DSL - Task PercolateAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Percolate(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html + /// + ///The index of the document being percolated. + ///The type of the document being percolated. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ Task> PercolateAsync(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. ///The percolator request definition using the percolate DSL - ElasticsearchResponse Percolate(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Percolate(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/{id}/_percolate - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html
+ ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// ///The index of the document being percolated. ///The type of the document being percolated. ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. ///The percolator request definition using the percolate DSL - Task PercolateAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///HEAD / - ///
http://www.elasticsearch.org/guide/
- ///
- ElasticsearchResponse Ping(Func queryString = null); + Task> PercolateAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///HEAD / - ///
http://www.elasticsearch.org/guide/
+ ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - Task PingAsync(Func queryString = null); - - ///GET /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Percolate(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_percolate + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html /// - ElasticsearchResponse ScrollGet(Func queryString = null); - - ///GET /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///The index of the document being percolated. + ///The type of the document being percolated. + ///Substitute the document in the request body with a document that is known by the specified id. On top of the id, the index and type parameter will be used to retrieve the document from within the cluster. + ///The percolator request definition using the percolate DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> PercolateAsync(string index, string type, string id, object body, Func queryString = null); + + ///Represents a HEAD on / + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Ping(Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on / + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> PingAsync(Func queryString = null, object deserializationState = null); + + ///Represents a HEAD on / + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Ping(Func queryString = null); + + ///Represents a HEAD on / + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/ + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> PingAsync(Func queryString = null); + + ///Represents a GET on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse ScrollGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_search/scroll + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ScrollGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ScrollGet(Func queryString = null); + + ///Represents a GET on /_search/scroll + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ScrollGetAsync(Func queryString = null); + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - Task ScrollGetAsync(Func queryString = null); + ///The scroll ID + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ElasticsearchResponse ScrollGet(string scroll_id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///The scroll ID - ElasticsearchResponse ScrollGet(string scroll_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ScrollGetAsync(string scroll_id, Func queryString = null, object deserializationState = null); - ///GET /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///The scroll ID - Task ScrollGetAsync(string scroll_id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse ScrollGet(string scroll_id, Func queryString = null); + + ///Represents a GET on /_search/scroll/{scroll_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ScrollGetAsync(string scroll_id, Func queryString = null); + + ///Represents a POST on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ElasticsearchResponse Scroll(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_search/scroll + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///The scroll ID if not passed by URL or query parameter. - ElasticsearchResponse Scroll(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> ScrollAsync(object body, Func queryString = null, object deserializationState = null); - ///POST /_search/scroll - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a POST on /_search/scroll + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///The scroll ID if not passed by URL or query parameter. - Task ScrollAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Scroll(object body, Func queryString = null); + + ///Represents a POST on /_search/scroll + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ Task> ScrollAsync(object body, Func queryString = null); + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///The scroll ID ///The scroll ID if not passed by URL or query parameter. - ElasticsearchResponse Scroll(string scroll_id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Scroll(string scroll_id, object body, Func queryString = null, object deserializationState = null); - ///POST /_search/scroll/{scroll_id} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html
+ ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// ///The scroll ID ///The scroll ID if not passed by URL or query parameter. - Task ScrollAsync(string scroll_id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> ScrollAsync(string scroll_id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html + /// + ///The scroll ID + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Scroll(string scroll_id, object body, Func queryString = null); + + ///Represents a POST on /_search/scroll/{scroll_id} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-request-scroll.html /// - ElasticsearchResponse SearchGet(Func queryString = null); + ///The scroll ID + ///The scroll ID if not passed by URL or query parameter. + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> ScrollAsync(string scroll_id, object body, Func queryString = null); + + ///Represents a GET on /_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SearchGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SearchGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SearchGet(Func queryString = null); + + ///Represents a GET on /_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SearchGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ElasticsearchResponse SearchGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - Task SearchGetAsync(Func queryString = null); + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SearchGetAsync(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SearchGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse SearchGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SearchGetAsync(string index, Func queryString = null); - ///GET /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices - Task SearchGetAsync(string index, Func queryString = null); + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SearchGet(string index, string type, Func queryString = null, object deserializationState = null); - ///GET /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/{type}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to search; leave empty to perform the operation on all types - ElasticsearchResponse SearchGet(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SearchGetAsync(string index, string type, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SearchGet(string index, string type, Func queryString = null); + + ///Represents a GET on /{index}/{type}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to search; leave empty to perform the operation on all types - Task SearchGetAsync(string index, string type, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SearchGetAsync(string index, string type, Func queryString = null); + + ///Represents a POST on /_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ElasticsearchResponse Search(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SearchAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Search(object body, Func queryString = null); + + ///Represents a POST on /_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SearchAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///The search definition using the Query DSL - ElasticsearchResponse Search(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ElasticsearchResponse Search(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///The search definition using the Query DSL - Task SearchAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SearchAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Search(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///The search definition using the Query DSL - ElasticsearchResponse Search(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SearchAsync(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types ///The search definition using the Query DSL - Task SearchAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ElasticsearchResponse Search(string index, string type, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/_search + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to search; leave empty to perform the operation on all types ///The search definition using the Query DSL - ElasticsearchResponse Search(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SearchAsync(string index, string type, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/_search - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a POST on /{index}/{type}/_search + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices + ///A comma-separated list of document types to search; leave empty to perform the operation on all types + ///The search definition using the Query DSL + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Search(string index, string type, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/_search + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices ///A comma-separated list of document types to search; leave empty to perform the operation on all types ///The search definition using the Query DSL - Task SearchAsync(string index, string type, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SearchAsync(string index, string type, object body, Func queryString = null); + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///PUT /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ElasticsearchResponse SnapshotCreate(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotCreateAsync(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotCreate(string repository, string snapshot, object body, Func queryString = null); + + ///Represents a PUT on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name ///The snapshot definition - ElasticsearchResponse SnapshotCreate(string repository, string snapshot, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SnapshotCreateAsync(string repository, string snapshot, object body, Func queryString = null); - ///PUT /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name ///The snapshot definition - Task SnapshotCreateAsync(string repository, string snapshot, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ElasticsearchResponse SnapshotCreatePost(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name ///The snapshot definition - ElasticsearchResponse SnapshotCreatePost(string repository, string snapshot, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotCreatePostAsync(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null); - ///POST /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///The snapshot definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotCreatePost(string repository, string snapshot, object body, Func queryString = null); + + ///Represents a POST on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name ///The snapshot definition - Task SnapshotCreatePostAsync(string repository, string snapshot, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SnapshotCreatePostAsync(string repository, string snapshot, object body, Func queryString = null); + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SnapshotCreateRepository(string repository, object body, Func queryString = null, object deserializationState = null); - ///PUT /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a PUT on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotCreateRepositoryAsync(string repository, object body, Func queryString = null, object deserializationState = null); + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotCreateRepository(string repository, object body, Func queryString = null); + + ///Represents a PUT on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///The repository definition - ElasticsearchResponse SnapshotCreateRepository(string repository, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///PUT /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ Task> SnapshotCreateRepositoryAsync(string repository, object body, Func queryString = null); + + ///Represents a POST on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///The repository definition - Task SnapshotCreateRepositoryAsync(string repository, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SnapshotCreateRepositoryPost(string repository, object body, Func queryString = null, object deserializationState = null); - ///POST /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///The repository definition - ElasticsearchResponse SnapshotCreateRepositoryPost(string repository, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ Task> SnapshotCreateRepositoryPostAsync(string repository, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///The repository definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotCreateRepositoryPost(string repository, object body, Func queryString = null); + + ///Represents a POST on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///The repository definition - Task SnapshotCreateRepositoryPostAsync(string repository, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SnapshotCreateRepositoryPostAsync(string repository, object body, Func queryString = null); + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SnapshotDelete(string repository, string snapshot, Func queryString = null, object deserializationState = null); - ///DELETE /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name - ElasticsearchResponse SnapshotDelete(string repository, string snapshot, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///DELETE /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ Task> SnapshotDeleteAsync(string repository, string snapshot, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotDelete(string repository, string snapshot, Func queryString = null); + + ///Represents a DELETE on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name - Task SnapshotDeleteAsync(string repository, string snapshot, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///DELETE /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ Task> SnapshotDeleteAsync(string repository, string snapshot, Func queryString = null); + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SnapshotDeleteRepository(string repository, Func queryString = null, object deserializationState = null); + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A comma-separated list of repository names - ElasticsearchResponse SnapshotDeleteRepository(string repository, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotDeleteRepositoryAsync(string repository, Func queryString = null, object deserializationState = null); - ///DELETE /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a DELETE on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotDeleteRepository(string repository, Func queryString = null); + + ///Represents a DELETE on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A comma-separated list of repository names - Task SnapshotDeleteRepositoryAsync(string repository, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///GET /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ Task> SnapshotDeleteRepositoryAsync(string repository, Func queryString = null); + + ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A comma-separated list of snapshot names - ElasticsearchResponse SnapshotGet(string repository, string snapshot, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SnapshotGet(string repository, string snapshot, Func queryString = null, object deserializationState = null); - ///GET /_snapshot/{repository}/{snapshot} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A comma-separated list of snapshot names - Task SnapshotGetAsync(string repository, string snapshot, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
- ///
- ElasticsearchResponse SnapshotGetRepository(Func queryString = null); + Task> SnapshotGetAsync(string repository, string snapshot, Func queryString = null, object deserializationState = null); - ///GET /_snapshot - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A comma-separated list of snapshot names + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotGet(string repository, string snapshot, Func queryString = null); + + ///Represents a GET on /_snapshot/{repository}/{snapshot} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A comma-separated list of snapshot names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SnapshotGetAsync(string repository, string snapshot, Func queryString = null); + + ///Represents a GET on /_snapshot + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SnapshotGetRepository(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_snapshot + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotGetRepositoryAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_snapshot + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotGetRepository(Func queryString = null); + + ///Represents a GET on /_snapshot + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SnapshotGetRepositoryAsync(Func queryString = null); + + ///Represents a GET on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// - Task SnapshotGetRepositoryAsync(Func queryString = null); + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ElasticsearchResponse SnapshotGetRepository(string repository, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_snapshot/{repository} + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A comma-separated list of repository names - ElasticsearchResponse SnapshotGetRepository(string repository, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotGetRepositoryAsync(string repository, Func queryString = null, object deserializationState = null); - ///GET /_snapshot/{repository} - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a GET on /_snapshot/{repository} + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A comma-separated list of repository names - Task SnapshotGetRepositoryAsync(string repository, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotGetRepository(string repository, Func queryString = null); + + ///Represents a GET on /_snapshot/{repository} + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A comma-separated list of repository names + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SnapshotGetRepositoryAsync(string repository, Func queryString = null); + + ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Details of what to restore + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /_snapshot/{repository}/{snapshot}/_restore - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ElasticsearchResponse SnapshotRestore(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name ///Details of what to restore - ElasticsearchResponse SnapshotRestore(string repository, string snapshot, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SnapshotRestoreAsync(string repository, string snapshot, object body, Func queryString = null, object deserializationState = null); - ///POST /_snapshot/{repository}/{snapshot}/_restore - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html
+ ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html + /// + ///A repository name + ///A snapshot name + ///Details of what to restore + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SnapshotRestore(string repository, string snapshot, object body, Func queryString = null); + + ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/modules-snapshots.html /// ///A repository name ///A snapshot name ///Details of what to restore - Task SnapshotRestoreAsync(string repository, string snapshot, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SnapshotRestoreAsync(string repository, string snapshot, object body, Func queryString = null); + + ///Represents a POST on /_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///The request definition - ElasticsearchResponse Suggest(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Suggest(object body, Func queryString = null, object deserializationState = null); - ///POST /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a POST on /_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///The request definition - Task SuggestAsync(object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SuggestAsync(object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Suggest(object body, Func queryString = null); + + ///Represents a POST on /_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///The request definition - ElasticsearchResponse Suggest(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// - ///POST /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SuggestAsync(object body, Func queryString = null); + + ///Represents a POST on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices ///The request definition - Task SuggestAsync(string index, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Suggest(string index, object body, Func queryString = null, object deserializationState = null); - ///GET /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a POST on /{index}/_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - ElasticsearchResponse SuggestGet(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ Task> SuggestAsync(string index, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Suggest(string index, object body, Func queryString = null); + + ///Represents a POST on /{index}/_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// - Task SuggestGetAsync(Func queryString = null); + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///The request definition + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SuggestAsync(string index, object body, Func queryString = null); + + ///Represents a GET on /_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse SuggestGet(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SuggestGetAsync(Func queryString = null, object deserializationState = null); + + ///Represents a GET on /_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SuggestGet(Func queryString = null); + + ///Represents a GET on /_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SuggestGetAsync(Func queryString = null); + + ///Represents a GET on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ElasticsearchResponse SuggestGet(string index, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/_suggest + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - ElasticsearchResponse SuggestGet(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + Task> SuggestGetAsync(string index, Func queryString = null, object deserializationState = null); - ///GET /{index}/_suggest - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html
+ ///Represents a GET on /{index}/_suggest + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html + /// + ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse SuggestGet(string index, Func queryString = null); + + ///Represents a GET on /{index}/_suggest + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-search.html /// ///A comma-separated list of index names to restrict the operation; use `_all` or empty string to perform the operation on all indices - Task SuggestGetAsync(string index, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> SuggestGetAsync(string index, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse TermvectorGet(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///GET /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ Task> TermvectorGetAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + + ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse TermvectorGet(string index, string type, string id, Func queryString = null); + + ///Represents a GET on /{index}/{type}/{id}/_termvector + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. - ElasticsearchResponse TermvectorGet(string index, string type, string id, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> TermvectorGetAsync(string index, string type, string id, Func queryString = null); - ///GET /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. - Task TermvectorGetAsync(string index, string type, string id, Func queryString = null); + ///Define parameters. See documentation. + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Termvector(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. ///Define parameters. See documentation. - ElasticsearchResponse Termvector(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/{id}/_termvector - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html
+ Task> TermvectorAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html + /// + ///The index in which the document resides. + ///The type of the document. + ///The id of the document. + ///Define parameters. See documentation. + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Termvector(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_termvector + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-termvectors.html /// ///The index in which the document resides. ///The type of the document. ///The id of the document. ///Define parameters. See documentation. - Task TermvectorAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> TermvectorAsync(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html + /// + ///The name of the index + ///The type of the document + ///Document ID + ///The request definition using either `script` or partial `doc` + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// + + ElasticsearchResponse Update(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); - ///POST /{index}/{type}/{id}/_update - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html
+ ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html /// ///The name of the index ///The type of the document ///Document ID ///The request definition using either `script` or partial `doc` - ElasticsearchResponse Update(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. +///Optional state that will be passed to the deserialization call for the response ///A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. + /// - If T is of type byte[] deserialization will be shortcircuited + /// - If T is of type VoidResponse the response stream will be ignored completely + /// - ///POST /{index}/{type}/{id}/_update - ///
http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html
+ Task> UpdateAsync(string index, string type, string id, object body, Func queryString = null, object deserializationState = null); + + ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html + /// + ///The name of the index + ///The type of the document + ///Document ID + ///The request definition using either `script` or partial `doc` + ///Optional function to specify any additional querystring parameters for the request. + ///ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + ElasticsearchResponse Update(string index, string type, string id, object body, Func queryString = null); + + ///Represents a POST on /{index}/{type}/{id}/_update + ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + ///See also: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-update.html /// ///The name of the index ///The type of the document ///Document ID ///The request definition using either `script` or partial `doc` - Task UpdateAsync(string index, string type, string id, object body, Func queryString = null); + ///Optional function to specify any additional querystring parameters for the request. + ///Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary + /// - Dynamic dictionary is a special dynamic type that allows json to be traversed safely + /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] + /// - can be safely dispatched to a nullable type even if intermediate properties do not exist + /// + + Task> UpdateAsync(string index, string type, string id, object body, Func queryString = null); } } \ No newline at end of file diff --git a/src/Elasticsearch.Net/Providers/Sniffer.cs b/src/Elasticsearch.Net/Providers/Sniffer.cs index 61fdb34fe94..00407b30f1e 100644 --- a/src/Elasticsearch.Net/Providers/Sniffer.cs +++ b/src/Elasticsearch.Net/Providers/Sniffer.cs @@ -29,14 +29,11 @@ private static Uri Parse(string scheme, string inetString) return new Uri("{0}://{1}:{2}".F(scheme, host, port)); } - public static IList FromStream(Stream stream, IElasticsearchSerializer serializer) + public static IList FromStream(IElasticsearchResponse response, Stream stream, IElasticsearchSerializer serializer) { - using (var memoryStream = new MemoryStream()) - { - stream.CopyTo(memoryStream); - var response = serializer.Deserialize(memoryStream.ToArray()); + var result = serializer.Deserialize(response, stream, null); var l = new List(); - foreach(var kv in response.nodes.Values) + foreach(var kv in result.nodes.Values) { if (!kv.http_address.IsNullOrEmpty()) l.Add(Parse("http", kv.http_address)); @@ -46,7 +43,6 @@ public static IList FromStream(Stream stream, IElasticsearchSerializer seri l.Add(Parse("http", kv.thrift_address)); } return l; - } } } } \ No newline at end of file diff --git a/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs b/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs index 42fcabb5be0..11c0f543c29 100644 --- a/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs +++ b/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs @@ -1,4 +1,9 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Threading.Tasks; namespace Elasticsearch.Net.Serialization { @@ -8,6 +13,86 @@ public T Deserialize(byte[] bytes) where T : class { return SimpleJson.DeserializeObject(bytes.Utf8String()); } + public T Deserialize(IElasticsearchResponse response, Stream stream, object deserializeState) + { + var ms = stream as MemoryStream; + if (ms != null) + return SimpleJson.DeserializeObject(ms.GetBuffer().Utf8String()); + + using (ms = new MemoryStream()) + { + stream.CopyTo(ms); + return SimpleJson.DeserializeObject(ms.ToArray().Utf8String()); + } + } + public Task DeserializeAsync(IElasticsearchResponse response, Stream stream, object deserializeState) + { + var tcs = new TaskCompletionSource(); + T r; + var ms = stream as MemoryStream; + if (ms != null) + { + r = SimpleJson.DeserializeObject(ms.GetBuffer().Utf8String()); + tcs.SetResult(r); + return tcs.Task; + } + using (ms = new MemoryStream()) + { + // return a task that reads the stream asynchronously + // and finally deserializes the result to T. + this.Iterate(ReadStreamAsync(stream, tcs), tcs); + return tcs.Task; + + } + + } + + public IEnumerable ReadStreamAsync(Stream stream, TaskCompletionSource tcs) + { + using (var ms = new MemoryStream()) + { + // Copy all data from the response stream + var buffer = new byte[BUFFER_SIZE]; + while (stream != null) + { + var read = Task.Factory.FromAsync(stream.BeginRead, stream.EndRead, buffer, 0, BUFFER_SIZE, null); + yield return read; + if (read.Result == 0) break; + ms.Write(buffer, 0, read.Result); + } + var r = SimpleJson.DeserializeObject(ms.ToArray().Utf8String()); + tcs.SetResult(r); + } + } + + const int BUFFER_SIZE = 1024; + + public void Iterate(IEnumerable asyncIterator, TaskCompletionSource tcs) + { + var enumerator = asyncIterator.GetEnumerator(); + Action recursiveBody = null; + recursiveBody = completedTask => + { + if (completedTask != null && completedTask.IsFaulted) + { + //none of the individual steps in _AsyncSteps run in parallel for 1 request + //as this would be impossible we can assume Aggregate Exception.InnerException + var exception = completedTask.Exception.InnerException; + tcs.TrySetException(exception); + enumerator.Dispose(); + } + else if (enumerator.MoveNext()) + { + //enumerator.Current.ContinueWith(recursiveBody, TaskContinuationOptions.ExecuteSynchronously); + enumerator.Current.ContinueWith(recursiveBody); + } + else + { + enumerator.Dispose(); + } + }; + recursiveBody(null); + } public byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented) { diff --git a/src/Elasticsearch.Net/Serialization/IElasticsearchSerializer.cs b/src/Elasticsearch.Net/Serialization/IElasticsearchSerializer.cs index 60db8eece8a..bd850d63699 100644 --- a/src/Elasticsearch.Net/Serialization/IElasticsearchSerializer.cs +++ b/src/Elasticsearch.Net/Serialization/IElasticsearchSerializer.cs @@ -1,11 +1,14 @@ using System; +using System.IO; using System.Linq; +using System.Threading.Tasks; namespace Elasticsearch.Net.Serialization { public interface IElasticsearchSerializer { - T Deserialize(byte[] bytes) where T : class; + T Deserialize(IElasticsearchResponse response, Stream stream, object deserializeState); + Task DeserializeAsync(IElasticsearchResponse reponse, Stream stream, object deserializeState); byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented); } } \ No newline at end of file diff --git a/src/Elasticsearch.sln b/src/Elasticsearch.sln index 6cc1d9f409f..e12dd94f938 100644 --- a/src/Elasticsearch.sln +++ b/src/Elasticsearch.sln @@ -147,7 +147,6 @@ Global {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Any CPU.ActiveCfg = Release|Any CPU {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Any CPU.Build.0 = Release|Any CPU {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Mixed Platforms.Build.0 = Release|Any CPU {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|x86.ActiveCfg = Release|Any CPU {97408393-78AC-45DF-BE6E-4C219A2E456D}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {97408393-78AC-45DF-BE6E-4C219A2E456D}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU @@ -268,7 +267,6 @@ Global {E97CCF40-0BA6-43FE-9F2D-58D454134088}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {E97CCF40-0BA6-43FE-9F2D-58D454134088}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU {E97CCF40-0BA6-43FE-9F2D-58D454134088}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU - {E97CCF40-0BA6-43FE-9F2D-58D454134088}.CodeGeneration|Mixed Platforms.Build.0 = Release|Any CPU {E97CCF40-0BA6-43FE-9F2D-58D454134088}.CodeGeneration|x86.ActiveCfg = Release|Any CPU {E97CCF40-0BA6-43FE-9F2D-58D454134088}.Debug - Generator|Any CPU.ActiveCfg = Debug|Any CPU {E97CCF40-0BA6-43FE-9F2D-58D454134088}.Debug - Generator|Any CPU.Build.0 = Debug|Any CPU @@ -288,7 +286,6 @@ Global {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU - {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.CodeGeneration|Mixed Platforms.Build.0 = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.CodeGeneration|x86.ActiveCfg = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Debug - Generator|Any CPU.ActiveCfg = Debug|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Debug - Generator|Any CPU.Build.0 = Debug|Any CPU @@ -303,12 +300,10 @@ Global {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Any CPU.ActiveCfg = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Any CPU.Build.0 = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|x86.ActiveCfg = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Mixed Platforms.Build.0 = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|x86.ActiveCfg = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|Any CPU.ActiveCfg = Debug|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|Any CPU.Build.0 = Debug|Any CPU @@ -323,12 +318,10 @@ Global {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Any CPU.ActiveCfg = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Any CPU.Build.0 = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Mixed Platforms.Build.0 = Release|Any CPU {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|x86.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU - {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Mixed Platforms.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|x86.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Debug - Generator|Any CPU.ActiveCfg = Debug|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Debug - Generator|Any CPU.Build.0 = Debug|Any CPU @@ -343,12 +336,10 @@ Global {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Any CPU.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Any CPU.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|x86.ActiveCfg = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU - {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|Mixed Platforms.Build.0 = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|x86.ActiveCfg = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.Debug - Generator|Any CPU.ActiveCfg = Debug|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.Debug - Generator|Any CPU.Build.0 = Debug|Any CPU diff --git a/src/Nest/Domain/Responses/BaseResponse.cs b/src/Nest/Domain/Responses/BaseResponse.cs index 2acca4dbc97..fbcf5740432 100644 --- a/src/Nest/Domain/Responses/BaseResponse.cs +++ b/src/Nest/Domain/Responses/BaseResponse.cs @@ -9,7 +9,7 @@ namespace Nest public interface IResponse { bool IsValid { get; } - ElasticsearchResponse ConnectionStatus { get; } + IElasticsearchResponse ConnectionStatus { get; } ElasticInferrer Infer { get; } } @@ -20,7 +20,7 @@ public BaseResponse() this.IsValid = true; } public virtual bool IsValid { get; internal set; } - public ElasticsearchResponse ConnectionStatus { get; internal set; } + public IElasticsearchResponse ConnectionStatus { get; internal set; } public ElasticInferrer _infer; public ElasticInferrer Infer @@ -31,11 +31,13 @@ public ElasticInferrer Infer return this._infer; if (this.ConnectionStatus == null) return null; - var settings = this.ConnectionStatus.Settings as IConnectionSettingsValues; - if (settings == null) - return null; - this._infer = new ElasticInferrer(settings); - return this._infer; + + return null; //TODO REVISIT + //var settings = this.ConnectionStatus.Settings as IConnectionSettingsValues; + //if (settings == null) + // return null; + //this._infer = new ElasticInferrer(settings); + //return this._infer; } } } diff --git a/src/Nest/Domain/Responses/GetMappingResponse.cs b/src/Nest/Domain/Responses/GetMappingResponse.cs index 44689d76cea..5c869df766d 100644 --- a/src/Nest/Domain/Responses/GetMappingResponse.cs +++ b/src/Nest/Domain/Responses/GetMappingResponse.cs @@ -22,7 +22,7 @@ public GetMappingResponse() this.IsValid = true; } - internal GetMappingResponse(ElasticsearchResponse status, GetRootObjectMappingWrapping dict) + internal GetMappingResponse(IElasticsearchResponse status, GetRootObjectMappingWrapping dict) { this.ConnectionStatus = status; this.IsValid = status.Success && dict != null && dict.Count > 0; diff --git a/src/Nest/Domain/State/ClusterState.cs b/src/Nest/Domain/State/ClusterState.cs index 23f13b9bb2b..3bcd0762c67 100644 --- a/src/Nest/Domain/State/ClusterState.cs +++ b/src/Nest/Domain/State/ClusterState.cs @@ -85,7 +85,7 @@ public class MetadataIndexState [JsonProperty("settings")] [JsonConverter(typeof(DictionaryKeysAreNotPropertyNamesJsonConverter))] - public ElasticsearchDynamic Settings { get; internal set; } + public DynamicDictionary Settings { get; internal set; } [JsonProperty("mappings")] [JsonConverter(typeof(DictionaryKeysAreNotPropertyNamesJsonConverter))] diff --git a/src/Nest/Domain/Stats/NodeInfo.cs b/src/Nest/Domain/Stats/NodeInfo.cs index e2fd15e45eb..1b5e78fb537 100644 --- a/src/Nest/Domain/Stats/NodeInfo.cs +++ b/src/Nest/Domain/Stats/NodeInfo.cs @@ -25,7 +25,7 @@ public class NodeInfo [JsonProperty(PropertyName = "settings")] [JsonConverter(typeof(DictionaryKeysAreNotPropertyNamesJsonConverter))] - public ElasticsearchDynamic Settings { get; internal set; } + public DynamicDictionary Settings { get; internal set; } [JsonProperty(PropertyName = "os")] public NodeInfoOS OS { get; internal set; } diff --git a/src/Nest/ElasticClient-Aliases.cs b/src/Nest/ElasticClient-Aliases.cs index 7ec0189c4c0..dafa490a05b 100644 --- a/src/Nest/ElasticClient-Aliases.cs +++ b/src/Nest/ElasticClient-Aliases.cs @@ -13,7 +13,7 @@ public IIndicesOperationResponse Alias(Func al { return this.Dispatch( aliasSelector, - (p, d) => this.RawDispatch.IndicesUpdateAliasesDispatch(p, d) + (p, d) => this.RawDispatch.IndicesUpdateAliasesDispatch(p, d) ); } @@ -21,7 +21,7 @@ public Task AliasAsync(Func( aliasSelector, - (p, d) => this.RawDispatch.IndicesUpdateAliasesDispatchAsync(p, d) + (p, d) => this.RawDispatch.IndicesUpdateAliasesDispatchAsync(p, d) ); } @@ -29,14 +29,14 @@ public IGetAliasesResponse GetAliases(Func( getAliasesDescriptor, - (p, d) => this.RawDispatch.IndicesGetAliasDispatch(p) + (p, d) => this.RawDispatch.IndicesGetAliasDispatch(p) ); } public Task GetAliasesAsync(Func getAliasesDescriptor) { return this.DispatchAsync( getAliasesDescriptor, - (p, d) => this.RawDispatch.IndicesGetAliasDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesGetAliasDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Analyze.cs b/src/Nest/ElasticClient-Analyze.cs index 8e8741980f4..84c5a23cf3a 100644 --- a/src/Nest/ElasticClient-Analyze.cs +++ b/src/Nest/ElasticClient-Analyze.cs @@ -11,14 +11,14 @@ public IAnalyzeResponse Analyze(Func analy { return this.Dispatch( analyzeSelector, - (p, d) => this.RawDispatch.IndicesAnalyzeDispatch(p, d) + (p, d) => this.RawDispatch.IndicesAnalyzeDispatch(p, d) ); } public Task AnalyzeAsync(Func analyzeSelector) { return this.DispatchAsync( analyzeSelector, - (p, d) => this.RawDispatch.IndicesAnalyzeDispatchAsync(p, d) + (p, d) => this.RawDispatch.IndicesAnalyzeDispatchAsync(p, d) ); } diff --git a/src/Nest/ElasticClient-Bulk.cs b/src/Nest/ElasticClient-Bulk.cs index 8309a08a462..65fcf1672e6 100644 --- a/src/Nest/ElasticClient-Bulk.cs +++ b/src/Nest/ElasticClient-Bulk.cs @@ -24,7 +24,7 @@ public IBulkResponse Bulk(Func bulkSelector) (p, d) => { var json = this.Serializer.SerializeBulkDescriptor(d); - return this.RawDispatch.BulkDispatch(p, json); + return this.RawDispatch.BulkDispatch(p, json); } ); } @@ -36,7 +36,7 @@ public Task BulkAsync(Func bulkSe (p, d) => { var json = this.Serializer.SerializeBulkDescriptor(d); - return this.RawDispatch.BulkDispatchAsync(p, json); + return this.RawDispatch.BulkDispatchAsync(p, json); } ); } diff --git a/src/Nest/ElasticClient-ClearCache.cs b/src/Nest/ElasticClient-ClearCache.cs index 74594fa7795..ded79a5fc02 100644 --- a/src/Nest/ElasticClient-ClearCache.cs +++ b/src/Nest/ElasticClient-ClearCache.cs @@ -18,7 +18,7 @@ public IShardsOperationResponse ClearCache(Func s); return this.Dispatch( selector, - (p, d)=> this.RawDispatch.IndicesClearCacheDispatch(p) + (p, d)=> this.RawDispatch.IndicesClearCacheDispatch(p) ); } @@ -31,7 +31,7 @@ public Task ClearCacheAsync(Func s); return this.DispatchAsync( selector, - (p, d)=> this.RawDispatch.IndicesClearCacheDispatchAsync(p) + (p, d)=> this.RawDispatch.IndicesClearCacheDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-Count.cs b/src/Nest/ElasticClient-Count.cs index 7191864a96c..bd9bb18cdb9 100644 --- a/src/Nest/ElasticClient-Count.cs +++ b/src/Nest/ElasticClient-Count.cs @@ -12,7 +12,7 @@ public ICountResponse Count(Func, CountDescriptor> coun countSelector = countSelector ?? (s => s); return this.Dispatch, CountQueryString, CountResponse>( countSelector, - (p,d) => this.RawDispatch.CountDispatch(p, d) + (p,d) => this.RawDispatch.CountDispatch(p, d) ); } @@ -21,7 +21,7 @@ public Task CountAsync(Func, CountDescript countSelector = countSelector ?? (s => s); return this.DispatchAsync, CountQueryString, CountResponse, ICountResponse>( countSelector, - (p,d) => this.RawDispatch.CountDispatchAsync(p, d) + (p,d) => this.RawDispatch.CountDispatchAsync(p, d) ); } } diff --git a/src/Nest/ElasticClient-CreateIndex.cs b/src/Nest/ElasticClient-CreateIndex.cs index 0e96a8860eb..22b1b9dcbf2 100644 --- a/src/Nest/ElasticClient-CreateIndex.cs +++ b/src/Nest/ElasticClient-CreateIndex.cs @@ -22,7 +22,7 @@ public IIndicesOperationResponse CreateIndex(string index, Func( descriptor, - (p, d) => this.RawDispatch.IndicesCreateDispatch(p, d._IndexSettings) + (p, d) => this.RawDispatch.IndicesCreateDispatch(p, d._IndexSettings) ); } public Task CreateIndexAsync(string index, Func createIndexSelector = null) @@ -33,7 +33,7 @@ public Task CreateIndexAsync(string index, Func( descriptor, - (p, d) => this.RawDispatch.IndicesCreateDispatchAsync(p, d._IndexSettings) + (p, d) => this.RawDispatch.IndicesCreateDispatchAsync(p, d._IndexSettings) ); } diff --git a/src/Nest/ElasticClient-Delete.cs b/src/Nest/ElasticClient-Delete.cs index a7e464f2bca..35491f3a885 100644 --- a/src/Nest/ElasticClient-Delete.cs +++ b/src/Nest/ElasticClient-Delete.cs @@ -11,7 +11,7 @@ public IDeleteResponse Delete(Func, DeleteDescriptor> { return this.Dispatch, DeleteQueryString, DeleteResponse>( deleteSelector, - (p, d) => this.RawDispatch.DeleteDispatch(p) + (p, d) => this.RawDispatch.DeleteDispatch(p) ); } @@ -19,7 +19,7 @@ public Task DeleteAsync(Func, DeleteDesc { return this.DispatchAsync, DeleteQueryString, DeleteResponse, IDeleteResponse>( deleteSelector, - (p, d) => this.RawDispatch.DeleteDispatchAsync(p) + (p, d) => this.RawDispatch.DeleteDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-DeleteByQuery.cs b/src/Nest/ElasticClient-DeleteByQuery.cs index 0ec4291d66b..cfc80d47fdd 100644 --- a/src/Nest/ElasticClient-DeleteByQuery.cs +++ b/src/Nest/ElasticClient-DeleteByQuery.cs @@ -11,7 +11,7 @@ public IDeleteResponse DeleteByQuery(Func, DeleteB { return this.Dispatch, DeleteByQueryQueryString, DeleteResponse>( deleteByQuerySelector, - (p, d) => this.RawDispatch.DeleteByQueryDispatch(p, d) + (p, d) => this.RawDispatch.DeleteByQueryDispatch(p, d) ); } @@ -19,7 +19,7 @@ public Task DeleteByQueryAsync(Func, DeleteByQueryQueryString, DeleteResponse, IDeleteResponse>( deleteByQuerySelector, - (p, d) => this.RawDispatch.DeleteByQueryDispatchAsync(p, d) + (p, d) => this.RawDispatch.DeleteByQueryDispatchAsync(p, d) ); } diff --git a/src/Nest/ElasticClient-Flush.cs b/src/Nest/ElasticClient-Flush.cs index 916d289e8ae..ddda8adf505 100644 --- a/src/Nest/ElasticClient-Flush.cs +++ b/src/Nest/ElasticClient-Flush.cs @@ -11,7 +11,7 @@ public IShardsOperationResponse Flush(Func sel { return this.Dispatch( selector, - (p, d) => this.RawDispatch.IndicesFlushDispatch(p) + (p, d) => this.RawDispatch.IndicesFlushDispatch(p) ); } @@ -19,7 +19,7 @@ public Task FlushAsync(Func( selector, - (p, d) => this.RawDispatch.IndicesFlushDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesFlushDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-Get.cs b/src/Nest/ElasticClient-Get.cs index caa982ec6a2..c1df482c30e 100644 --- a/src/Nest/ElasticClient-Get.cs +++ b/src/Nest/ElasticClient-Get.cs @@ -18,7 +18,7 @@ public IGetResponse Get(Func, GetDescriptor> getSelect { return this.Dispatch, GetQueryString, GetResponse>( getSelector, - (p, d) => this.RawDispatch.GetDispatch(p) + (p, d) => this.RawDispatch.GetDispatch>(p) ); } @@ -26,7 +26,7 @@ public Task> GetAsync(Func, GetDescriptor { return this.DispatchAsync, GetQueryString, GetResponse, IGetResponse>( getSelector, - (p, d) => this.RawDispatch.GetDispatchAsync(p) + (p, d) => this.RawDispatch.GetDispatchAsync>(p) ); } diff --git a/src/Nest/ElasticClient-Health.cs b/src/Nest/ElasticClient-Health.cs index 266d44b236e..0cf2397e1c8 100644 --- a/src/Nest/ElasticClient-Health.cs +++ b/src/Nest/ElasticClient-Health.cs @@ -15,7 +15,7 @@ public IHealthResponse Health(Func s); return this.Dispatch( clusterHealthSelector, - (p, d) => this.RawDispatch.ClusterHealthDispatch(p) + (p, d) => this.RawDispatch.ClusterHealthDispatch(p) ); } @@ -24,7 +24,7 @@ public Task HealthAsync(Func s); return this.DispatchAsync( clusterHealthSelector, - (p, d) => this.RawDispatch.ClusterHealthDispatchAsync(p) + (p, d) => this.RawDispatch.ClusterHealthDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Index.cs b/src/Nest/ElasticClient-Index.cs index eb1c1f4d574..0030711ca69 100644 --- a/src/Nest/ElasticClient-Index.cs +++ b/src/Nest/ElasticClient-Index.cs @@ -16,7 +16,7 @@ public IIndexResponse Index(T @object, Func, IndexDescript var descriptor = indexSelector(new IndexDescriptor().Object(@object)); return this.Dispatch, IndexQueryString, IndexResponse>( descriptor, - (p, d) => this.RawDispatch.IndexDispatch(p, @object)); + (p, d) => this.RawDispatch.IndexDispatch(p, @object)); } public Task IndexAsync(T @object, Func, IndexDescriptor> indexSelector = null) where T : class @@ -26,7 +26,7 @@ public Task IndexAsync(T @object, Func, In var descriptor = indexSelector(new IndexDescriptor().Object(@object)); return this.DispatchAsync, IndexQueryString, IndexResponse, IIndexResponse>( descriptor, - (p, d) => this.RawDispatch.IndexDispatchAsync(p, @object)); + (p, d) => this.RawDispatch.IndexDispatchAsync(p, @object)); } diff --git a/src/Nest/ElasticClient-IndexExists.cs b/src/Nest/ElasticClient-IndexExists.cs index d140f32a1d0..6b89cc81e25 100644 --- a/src/Nest/ElasticClient-IndexExists.cs +++ b/src/Nest/ElasticClient-IndexExists.cs @@ -14,18 +14,14 @@ public IIndexExistsResponse IndexExists(Func( selector, - (p, d) => this.RawDispatch.IndicesExistsDispatch(p), - (c, d) => new IndexExistsResponse(c), - allow404:true + (p, d) => this.RawDispatch.IndicesExistsDispatch(p) ); } public Task IndexExistsAsync(Func selector) { return this.DispatchAsync( selector, - (p, d) => this.RawDispatch.IndicesExistsDispatchAsync(p), - (c, d) => new IndexExistsResponse(c), - allow404:true + (p, d) => this.RawDispatch.IndicesExistsDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-MappingDelete.cs b/src/Nest/ElasticClient-MappingDelete.cs index 28231f99722..847522c7ab1 100644 --- a/src/Nest/ElasticClient-MappingDelete.cs +++ b/src/Nest/ElasticClient-MappingDelete.cs @@ -14,7 +14,7 @@ public IIndicesResponse DeleteMapping(Func( selector, - (p, d) => this.RawDispatch.IndicesDeleteMappingDispatch(p) + (p, d) => this.RawDispatch.IndicesDeleteMappingDispatch(p) ); } @@ -22,7 +22,7 @@ public Task DeleteMappingAsync(Func( selector, - (p, d) => this.RawDispatch.IndicesDeleteMappingDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesDeleteMappingDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-MappingGet.cs b/src/Nest/ElasticClient-MappingGet.cs index 76fe3b067c8..e4f66e7c801 100644 --- a/src/Nest/ElasticClient-MappingGet.cs +++ b/src/Nest/ElasticClient-MappingGet.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading.Tasks; using Elasticsearch.Net; @@ -8,14 +9,17 @@ namespace Nest { + using GetMappingConverter = Func; public partial class ElasticClient { public IGetMappingResponse GetMapping(Func selector) { return this.Dispatch( selector, - (p, d) => this.RawDispatch.IndicesGetMappingDispatch(p), - (c, d) => this.Serializer.DeserializeGetMappingResponse(c) + (p, d) => this.RawDispatch.IndicesGetMappingDispatch( + p, + new GetMappingConverter((r, s) => this.DeserializeGetMappingResponse(r, d, s)) + ) ); } @@ -24,11 +28,21 @@ public Task GetMappingAsync(Func( selector, - (p, d) => this.RawDispatch.IndicesGetMappingDispatchAsync(p), - (c, d) => this.Serializer.DeserializeGetMappingResponse(c) + (p, d) => this.RawDispatch.IndicesGetMappingDispatchAsync( + p, + new GetMappingConverter((r, s) => this.DeserializeGetMappingResponse(r, d, s)) + ) ); } + + private GetMappingResponse DeserializeGetMappingResponse(IElasticsearchResponse response, GetMappingDescriptor d, Stream stream) + { + var dict = response.Success + ? this.Serializer.DeserializeInternal(stream) + : null; + return new GetMappingResponse(response, dict); + } } } \ No newline at end of file diff --git a/src/Nest/ElasticClient-MappingIndex.cs b/src/Nest/ElasticClient-MappingIndex.cs index afecdb9931b..4653fb206b0 100644 --- a/src/Nest/ElasticClient-MappingIndex.cs +++ b/src/Nest/ElasticClient-MappingIndex.cs @@ -19,7 +19,7 @@ public IIndexSettingsResponse GetIndexSettings(Func( selector, - (p, d) => this.RawDispatch.IndicesGetSettingsDispatch(p) + (p, d) => this.RawDispatch.IndicesGetSettingsDispatch(p) ); } @@ -27,7 +27,7 @@ public Task GetIndexSettingsAsync(Func( selector, - (p, d) => this.RawDispatch.IndicesGetSettingsDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesGetSettingsDispatchAsync(p) ); } @@ -35,14 +35,14 @@ public IIndicesResponse DeleteIndex(Func( selector, - (p, d)=> this.RawDispatch.IndicesDeleteDispatch(p) + (p, d)=> this.RawDispatch.IndicesDeleteDispatch(p) ); } public Task DeleteIndexAsync(Func selector) { return this.DispatchAsync( selector, - (p, d)=> this.RawDispatch.IndicesDeleteDispatchAsync(p) + (p, d)=> this.RawDispatch.IndicesDeleteDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-MappingType.cs b/src/Nest/ElasticClient-MappingType.cs index 0ab166c22b7..d90be86820c 100644 --- a/src/Nest/ElasticClient-MappingType.cs +++ b/src/Nest/ElasticClient-MappingType.cs @@ -23,7 +23,7 @@ public IIndicesResponse Map(Func, PutMappingDescripto { {p.Type, d._Mapping} }; - return this.RawDispatch.IndicesPutMappingDispatch(p, o); + return this.RawDispatch.IndicesPutMappingDispatch(p, o); } ); } @@ -39,7 +39,7 @@ public Task MapAsync(Func, PutMappi { {p.Type, d._Mapping} }; - return this.RawDispatch.IndicesPutMappingDispatchAsync(p, o); + return this.RawDispatch.IndicesPutMappingDispatchAsync(p, o); } ); } diff --git a/src/Nest/ElasticClient-MoreLikeThis.cs b/src/Nest/ElasticClient-MoreLikeThis.cs index d7bc4325cc6..e10705e81f3 100644 --- a/src/Nest/ElasticClient-MoreLikeThis.cs +++ b/src/Nest/ElasticClient-MoreLikeThis.cs @@ -16,7 +16,7 @@ public IQueryResponse MoreLikeThis(Func, MoreLik (p, d) => { CopySearchQueryString(d); - return this.RawDispatch.MltDispatch(p, d._Search); + return this.RawDispatch.MltDispatch>(p, d._Search); } ); @@ -28,7 +28,7 @@ public Task> MoreLikeThisAsync(Func { CopySearchQueryString(d); - return this.RawDispatch.MltDispatchAsync(p, d._Search); + return this.RawDispatch.MltDispatchAsync>(p, d._Search); }); } diff --git a/src/Nest/ElasticClient-MultiGet.cs b/src/Nest/ElasticClient-MultiGet.cs index 0981d419c83..9b0b00e3028 100644 --- a/src/Nest/ElasticClient-MultiGet.cs +++ b/src/Nest/ElasticClient-MultiGet.cs @@ -18,22 +18,28 @@ public IMultiGetResponse MultiGet(Func m { multiGetSelector.ThrowIfNull("multiGetSelector"); var descriptor = multiGetSelector(new MultiGetDescriptor(this._connectionSettings)); + var converter = CreateCovariantMultiGetConverter(descriptor); return this.Dispatch( descriptor, - (p, d) => this.RawDispatch.MgetDispatch(p, d), - this.Serializer.DeserializeMultiGetResponse + (p, d) => this.RawDispatch.MgetDispatch(p, d, converter) ); } public Task MultiGetAsync(Func multiGetSelector) { multiGetSelector.ThrowIfNull("multiGetSelector"); var descriptor = multiGetSelector(new MultiGetDescriptor(this._connectionSettings)); + var converter = CreateCovariantMultiGetConverter(descriptor); return this.DispatchAsync( descriptor, - (p, d) => this.RawDispatch.MgetDispatchAsync(p, d), - this.Serializer.DeserializeMultiGetResponse + (p, d) => this.RawDispatch.MgetDispatchAsync(p, d, converter) ); } + private JsonConverter CreateCovariantMultiGetConverter(MultiGetDescriptor descriptor) + { + var multiGetHitConverter = new MultiGetHitConverter(descriptor); + return multiGetHitConverter; + } + } } diff --git a/src/Nest/ElasticClient-MultiSearch.cs b/src/Nest/ElasticClient-MultiSearch.cs index 8987bbe023c..7ff1dcc27cb 100644 --- a/src/Nest/ElasticClient-MultiSearch.cs +++ b/src/Nest/ElasticClient-MultiSearch.cs @@ -22,9 +22,9 @@ public IMultiSearchResponse MultiSearch(Func { var json = this.Serializer.SerializeMultiSearch(d); - return this.RawDispatch.MsearchDispatch(p, json); - }, - this.Serializer.DeserializeMultiSearchResponse + var converter = this.CreateMultiSearchConverter(d); + return this.RawDispatch.MsearchDispatch(p, json, converter); + } ); } @@ -35,10 +35,16 @@ public Task MultiSearchAsync(Func { var json = this.Serializer.SerializeMultiSearch(d); - return this.RawDispatch.MsearchDispatchAsync(p, json); - }, - this.Serializer.DeserializeMultiSearchResponse + var converter = this.CreateMultiSearchConverter(d); + return this.RawDispatch.MsearchDispatchAsync(p, json, converter); + } ); } + + private JsonConverter CreateMultiSearchConverter(MultiSearchDescriptor descriptor) + { + var multiSearchConverter = new MultiSearchConverter(this._connectionSettings, descriptor); + return multiSearchConverter; + } } } diff --git a/src/Nest/ElasticClient-Nodes.cs b/src/Nest/ElasticClient-Nodes.cs index 280a889be79..32c0bbd42aa 100644 --- a/src/Nest/ElasticClient-Nodes.cs +++ b/src/Nest/ElasticClient-Nodes.cs @@ -14,7 +14,7 @@ public INodeInfoResponse NodesInfo(Func s); return this.Dispatch( selector, - (p, d)=> this.RawDispatch.NodesInfoDispatch(p) + (p, d)=> this.RawDispatch.NodesInfoDispatch(p) ); } @@ -23,7 +23,7 @@ public Task NodesInfoAsync(Func s); return this.DispatchAsync( selector, - (p, d)=> this.RawDispatch.NodesInfoDispatchAsync(p) + (p, d)=> this.RawDispatch.NodesInfoDispatchAsync(p) ); } @@ -37,7 +37,7 @@ public INodeStatsResponse NodesStats(Func s); return this.Dispatch( selector, - (p, d) => this.RawDispatch.NodesStatsDispatch(p) + (p, d) => this.RawDispatch.NodesStatsDispatch(p) ); } @@ -51,7 +51,7 @@ public Task NodesStatsAsync(Func s); return this.DispatchAsync( selector, - (p, d) => this.RawDispatch.NodesStatsDispatchAsync(p) + (p, d) => this.RawDispatch.NodesStatsDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-OpenClose.cs b/src/Nest/ElasticClient-OpenClose.cs index 4839821a311..b47ae249875 100644 --- a/src/Nest/ElasticClient-OpenClose.cs +++ b/src/Nest/ElasticClient-OpenClose.cs @@ -10,7 +10,7 @@ public IIndicesOperationResponse OpenIndex(Func( openIndexSelector, - (p, d) => this.RawDispatch.IndicesOpenDispatch(p) + (p, d) => this.RawDispatch.IndicesOpenDispatch(p) ); } @@ -18,7 +18,7 @@ public Task OpenIndexAsync(Func( openIndexSelector, - (p, d) => this.RawDispatch.IndicesOpenDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesOpenDispatchAsync(p) ); } @@ -26,7 +26,7 @@ public IIndicesOperationResponse CloseIndex(Func( closeIndexSelector, - (p, d) => this.RawDispatch.IndicesCloseDispatch(p) + (p, d) => this.RawDispatch.IndicesCloseDispatch(p) ); } @@ -34,7 +34,7 @@ public Task CloseIndexAsync(Func( closeIndexSelector, - (p, d) => this.RawDispatch.IndicesCloseDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesCloseDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Optimize.cs b/src/Nest/ElasticClient-Optimize.cs index 6236d521b00..7ab84995d69 100644 --- a/src/Nest/ElasticClient-Optimize.cs +++ b/src/Nest/ElasticClient-Optimize.cs @@ -13,7 +13,7 @@ public IShardsOperationResponse Optimize(Func s); return this.Dispatch( optimizeSelector, - (p,d) => this.RawDispatch.IndicesOptimizeDispatch(p) + (p,d) => this.RawDispatch.IndicesOptimizeDispatch(p) ); } @@ -22,7 +22,7 @@ public Task OptimizeAsync(Func s); return this.DispatchAsync( optimizeSelector, - (p,d) => this.RawDispatch.IndicesOptimizeDispatchAsync(p) + (p,d) => this.RawDispatch.IndicesOptimizeDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-Percolate.cs b/src/Nest/ElasticClient-Percolate.cs index 8ec340ed1e8..214b8858703 100644 --- a/src/Nest/ElasticClient-Percolate.cs +++ b/src/Nest/ElasticClient-Percolate.cs @@ -13,8 +13,7 @@ public IUnregisterPercolateResponse UnregisterPercolator(string name, Func s); return this.Dispatch( s => selector(s.Name(name)), - (p, d) => this.RawDispatch.DeleteDispatch(p), - allow404: true + (p, d) => this.RawDispatch.DeleteDispatch(p) ); } @@ -23,8 +22,7 @@ public Task UnregisterPercolatorAsync(string name, selector = selector ?? (s => s); return this.DispatchAsync( s => selector(s.Name(name)), - (p, d) => this.RawDispatch.DeleteDispatchAsync(p), - allow404: true + (p, d) => this.RawDispatch.DeleteDispatchAsync(p) ); } @@ -35,7 +33,7 @@ public IRegisterPercolateResponse RegisterPercolator(string name, Func, IndexQueryString, RegisterPercolateResponse>( s => percolatorSelector(s.Name(name)), - (p, d) => this.RawDispatch.IndexDispatch(p, d._RequestBody) + (p, d) => this.RawDispatch.IndexDispatch(p, d._RequestBody) ); } @@ -44,7 +42,7 @@ public Task RegisterPercolatorAsync(string name, percolatorSelector.ThrowIfNull("percolatorSelector"); return this.DispatchAsync, IndexQueryString, RegisterPercolateResponse, IRegisterPercolateResponse>( s => percolatorSelector(s.Name(name)), - (p, d) => this.RawDispatch.IndexDispatchAsync(p, d._RequestBody) + (p, d) => this.RawDispatch.IndexDispatchAsync(p, d._RequestBody) ); } @@ -70,7 +68,7 @@ public IPercolateResponse Percolate(K @object, Func s); return this.Dispatch, PercolateQueryString, PercolateResponse>( s => percolateSelector(s.Object(@object)), - (p, d) => this.RawDispatch.PercolateDispatch(p, d) + (p, d) => this.RawDispatch.PercolateDispatch(p, d) ); } @@ -81,7 +79,7 @@ public Task PercolateAsync(K @object, Func s); return this.DispatchAsync, PercolateQueryString, PercolateResponse, IPercolateResponse>( s => percolateSelector(s.Object(@object)), - (p, d) => this.RawDispatch.PercolateDispatchAsync(p, d) + (p, d) => this.RawDispatch.PercolateDispatchAsync(p, d) ); } } diff --git a/src/Nest/ElasticClient-Refresh.cs b/src/Nest/ElasticClient-Refresh.cs index a82e53a1326..fd4438554ee 100644 --- a/src/Nest/ElasticClient-Refresh.cs +++ b/src/Nest/ElasticClient-Refresh.cs @@ -13,7 +13,7 @@ public IShardsOperationResponse Refresh(Func s); return this.Dispatch( refreshSelector, - (p,d) => this.RawDispatch.IndicesRefreshDispatch(p) + (p,d) => this.RawDispatch.IndicesRefreshDispatch(p) ); } @@ -22,7 +22,7 @@ public Task RefreshAsync(Func s); return this.DispatchAsync( refreshSelector, - (p,d)=> this.RawDispatch.IndicesRefreshDispatchAsync(p) + (p,d)=> this.RawDispatch.IndicesRefreshDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-RootNodeInfo.cs b/src/Nest/ElasticClient-RootNodeInfo.cs index ead9ec17e49..617956b0654 100644 --- a/src/Nest/ElasticClient-RootNodeInfo.cs +++ b/src/Nest/ElasticClient-RootNodeInfo.cs @@ -16,7 +16,7 @@ public IRootInfoResponse RootNodeInfo(Func selec selector = selector ?? ((i) => i); return this.Dispatch( selector, - (p, d) => this.RawDispatch.InfoDispatch(p) + (p, d) => this.RawDispatch.InfoDispatch(p) ); } @@ -29,7 +29,7 @@ public Task RootNodeInfoAsync(Func i); return this.DispatchAsync( selector, - (p, d) => this.RawDispatch.InfoDispatchAsync(p) + (p, d) => this.RawDispatch.InfoDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Scroll.cs b/src/Nest/ElasticClient-Scroll.cs index 0ae3d13308a..5a0e8593959 100644 --- a/src/Nest/ElasticClient-Scroll.cs +++ b/src/Nest/ElasticClient-Scroll.cs @@ -16,7 +16,7 @@ public IQueryResponse Scroll( { var scrollId = p.ScrollId; p.ScrollId = null; - return this.RawDispatch.ScrollDispatch(p, scrollId); + return this.RawDispatch.ScrollDispatch>(p, scrollId); } ); } @@ -30,7 +30,7 @@ public Task> ScrollAsync( { var scrollId = p.ScrollId; p.ScrollId = null; - return this.RawDispatch.ScrollDispatchAsync(p, scrollId); + return this.RawDispatch.ScrollDispatchAsync>(p, scrollId); } ); } diff --git a/src/Nest/ElasticClient-Search.cs b/src/Nest/ElasticClient-Search.cs index d08632aef89..d8926842e4d 100644 --- a/src/Nest/ElasticClient-Search.cs +++ b/src/Nest/ElasticClient-Search.cs @@ -8,6 +8,7 @@ using System.Linq; using Nest.Resolvers; using Elasticsearch.Net; +using Newtonsoft.Json; namespace Nest { @@ -32,8 +33,9 @@ public IQueryResponse Search(Func, Sear searchSelector.ThrowIfNull("searchSelector"); var descriptor = searchSelector(new SearchDescriptor()); var pathInfo = ((IPathInfo)descriptor).ToPathInfo(this._connectionSettings); - var status = this.RawDispatch.SearchDispatch(pathInfo, descriptor); - return this.Serializer.DeserializeSearchResponse(status, descriptor); + var deserializationState = CreateCovariantSearchSelector(descriptor); + var status = this.RawDispatch.SearchDispatch>(pathInfo, descriptor, deserializationState); + return status.Response; } @@ -55,8 +57,30 @@ public Task> SearchAsync(Func()); var pathInfo = ((IPathInfo)descriptor).ToPathInfo(this._connectionSettings); - return this.RawDispatch.SearchDispatchAsync(pathInfo, descriptor) - .ContinueWith(t=> this.Serializer.DeserializeSearchResponse(t.Result, descriptor)); + var deserializationState = CreateCovariantSearchSelector(descriptor); + return this.RawDispatch.SearchDispatchAsync>(pathInfo, descriptor, deserializationState) + .ContinueWith>(t=> t.Result.Response); + } + + private JsonConverter CreateCovariantSearchSelector(SearchDescriptor originalSearchDescriptor) + where T : class + where TResult : class + { + var types = (originalSearchDescriptor._Types ?? Enumerable.Empty()).Where(t => t.Type != null); + if (originalSearchDescriptor._ConcreteTypeSelector == null && types.Any(t => t.Type != typeof(TResult))) + { + var typeDictionary = types.ToDictionary(this.Infer.TypeName, t => t.Type); + originalSearchDescriptor._ConcreteTypeSelector = (o, h) => + { + Type t; + if (!typeDictionary.TryGetValue(h.Type, out t)) + return typeof(TResult); + return t; + }; + } + if (originalSearchDescriptor._ConcreteTypeSelector == null) + return null; + return new ConcreteTypeConverter(originalSearchDescriptor._ConcreteTypeSelector); } } } \ No newline at end of file diff --git a/src/Nest/ElasticClient-Segments.cs b/src/Nest/ElasticClient-Segments.cs index 87b9f7a06d2..2398c91d69d 100644 --- a/src/Nest/ElasticClient-Segments.cs +++ b/src/Nest/ElasticClient-Segments.cs @@ -12,7 +12,7 @@ public ISegmentsResponse Segments(Func s segmentsSelector = segmentsSelector ?? (s => s); return this.Dispatch( segmentsSelector, - (p, d) => this.RawDispatch.IndicesSegmentsDispatch(p) + (p, d) => this.RawDispatch.IndicesSegmentsDispatch(p) ); } @@ -21,7 +21,7 @@ public Task SegmentsAsync(Func s); return this.DispatchAsync( segmentsSelector, - (p, d) => this.RawDispatch.IndicesSegmentsDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesSegmentsDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Snapshot.cs b/src/Nest/ElasticClient-Snapshot.cs index 7763cccfb19..0df000dba6e 100644 --- a/src/Nest/ElasticClient-Snapshot.cs +++ b/src/Nest/ElasticClient-Snapshot.cs @@ -12,7 +12,7 @@ public IShardsOperationResponse Snapshot(Func s); return this.Dispatch( snapshotSelector, - (p, d) => this.RawDispatch.IndicesSnapshotIndexDispatch(p) + (p, d) => this.RawDispatch.IndicesSnapshotIndexDispatch(p) ); } @@ -21,7 +21,7 @@ public Task SnapshotAsync(Func s); return this.DispatchAsync( snapshotSelector, - (p, d) => this.RawDispatch.IndicesSnapshotIndexDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesSnapshotIndexDispatchAsync(p) ); } diff --git a/src/Nest/ElasticClient-Source.cs b/src/Nest/ElasticClient-Source.cs index 1f5d7de1fc7..6388d2aace7 100644 --- a/src/Nest/ElasticClient-Source.cs +++ b/src/Nest/ElasticClient-Source.cs @@ -17,7 +17,7 @@ public FieldSelection SourceFields(Func, GetDescriptor { return this.Dispatch, GetQueryString, GetResponse>( getSelector, - (p, d) => this.RawDispatch.GetDispatch(p) + (p, d) => this.RawDispatch.GetDispatch>(p) ).Fields; } @@ -25,7 +25,7 @@ public Task> SourceFieldsAsync(Func, GetDe { return this.DispatchAsync, GetQueryString, GetResponse, IGetResponse>( getSelector, - (p, d) => this.RawDispatch.GetDispatchAsync(p) + (p, d) => this.RawDispatch.GetDispatchAsync>(p) ).ContinueWith(t=>t.Result.Fields); } @@ -34,7 +34,7 @@ public T Source(Func, GetDescriptor> getSelector) where T { return this.Dispatch, GetQueryString, GetResponse>( getSelector, - (p, d) => this.RawDispatch.GetDispatch(p) + (p, d) => this.RawDispatch.GetDispatch>(p) ).Source; } @@ -42,7 +42,7 @@ public Task SourceAsync(Func, GetDescriptor> getSelect { return this.DispatchAsync, GetQueryString, GetResponse, IGetResponse>( getSelector, - (p, d) => this.RawDispatch.GetDispatchAsync(p) + (p, d) => this.RawDispatch.GetDispatchAsync>(p) ).ContinueWith(t=>t.Result.Source); } diff --git a/src/Nest/ElasticClient-State.cs b/src/Nest/ElasticClient-State.cs index a3800dd4090..90e3bf83d21 100644 --- a/src/Nest/ElasticClient-State.cs +++ b/src/Nest/ElasticClient-State.cs @@ -12,7 +12,7 @@ public IClusterStateResponse ClusterState(Func s); return this.Dispatch( clusterStateSelector, - (p, d) => this.RawDispatch.ClusterStateDispatch(p) + (p, d) => this.RawDispatch.ClusterStateDispatch(p) ); } @@ -22,7 +22,7 @@ public Task ClusterStateAsync(Func( clusterStateSelector, - (p, d) => this.RawDispatch.ClusterStateDispatchAsync(p) + (p, d) => this.RawDispatch.ClusterStateDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Stats.cs b/src/Nest/ElasticClient-Stats.cs index fd55b0cb655..fc0acd20f50 100644 --- a/src/Nest/ElasticClient-Stats.cs +++ b/src/Nest/ElasticClient-Stats.cs @@ -14,7 +14,7 @@ public IGlobalStatsResponse IndicesStats(Func s); return this.Dispatch( selector, - (p, d) => this.RawDispatch.IndicesStatsDispatch(p) + (p, d) => this.RawDispatch.IndicesStatsDispatch(p) ); } @@ -23,7 +23,7 @@ public Task IndicesStatsAsync(Func s); return this.DispatchAsync( selector, - (p, d) => this.RawDispatch.IndicesStatsDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesStatsDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Status.cs b/src/Nest/ElasticClient-Status.cs index 59a73223461..c65de3b571c 100644 --- a/src/Nest/ElasticClient-Status.cs +++ b/src/Nest/ElasticClient-Status.cs @@ -15,7 +15,7 @@ public IStatusResponse Status(Func s); return this.Dispatch( selector, - (p, d) => this.RawDispatch.IndicesStatusDispatch(p) + (p, d) => this.RawDispatch.IndicesStatusDispatch(p) ); } public Task StatusAsync(Func selector = null) @@ -23,7 +23,7 @@ public Task StatusAsync(Func s); return this.DispatchAsync( selector, - (p, d) => this.RawDispatch.IndicesStatusDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesStatusDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Template.cs b/src/Nest/ElasticClient-Template.cs index 6f3883c9153..eadadaf6a91 100644 --- a/src/Nest/ElasticClient-Template.cs +++ b/src/Nest/ElasticClient-Template.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading.Tasks; using Elasticsearch.Net; @@ -8,37 +9,56 @@ namespace Nest { + using GetTemplateConverter = Func; public partial class ElasticClient { public ITemplateResponse GetTemplate(string name, Func getTemplateSelector = null) { - getTemplateSelector = getTemplateSelector ?? (s => s); + getTemplateSelector = getTemplateSelector ?? (s => s); return this.Dispatch( (d) => getTemplateSelector(d.Name(name)), - (p, d) => this.RawDispatch.IndicesGetTemplateDispatch(p), - this.Serializer.DeserializeTemplateResponse + (p, d) => this.RawDispatch.IndicesGetTemplateDispatch(p, (GetTemplateConverter)this.DeserializeTemplateResponse) ); } - + public Task GetTemplateAsync(string name, Func getTemplateSelector = null) { - getTemplateSelector = getTemplateSelector ?? (s => s); + getTemplateSelector = getTemplateSelector ?? (s => s); return this.DispatchAsync( d => getTemplateSelector(d.Name(name)), - (p, d) => this.RawDispatch.IndicesGetTemplateDispatchAsync(p), - this.Serializer.DeserializeTemplateResponse + (p, d) => this.RawDispatch.IndicesGetTemplateDispatchAsync( + p, (GetTemplateConverter)this.DeserializeTemplateResponse) ); } + private TemplateResponse DeserializeTemplateResponse( + IElasticsearchResponse response, + Stream stream) + { + if (!response.Success) return new TemplateResponse { ConnectionStatus = response, IsValid = false }; + + var dict = this.Serializer.DeserializeInternal>(stream); + if (dict.Count == 0) + throw new DslException("Could not deserialize TemplateMapping"); + + return new TemplateResponse + { + ConnectionStatus = response, + IsValid = true, + Name = dict.First().Key, + TemplateMapping = dict.First().Value + }; + } + public IIndicesOperationResponse PutTemplate(string name, Func putTemplateSelector) { putTemplateSelector.ThrowIfNull("putTemplateSelector"); var descriptor = putTemplateSelector(new PutTemplateDescriptor(this._connectionSettings).Name(name)); return this.Dispatch( descriptor, - (p, d) => this.RawDispatch.IndicesPutTemplateDispatch(p, d._TemplateMapping) + (p, d) => this.RawDispatch.IndicesPutTemplateDispatch(p, d._TemplateMapping) ); } @@ -48,25 +68,25 @@ public Task PutTemplateAsync(string name, Func( descriptor, - (p, d) => this.RawDispatch.IndicesPutTemplateDispatchAsync(p, d._TemplateMapping) + (p, d) => this.RawDispatch.IndicesPutTemplateDispatchAsync(p, d._TemplateMapping) ); } - + public IIndicesOperationResponse DeleteTemplate(string name, Func deleteTemplateSelector = null) { - deleteTemplateSelector = deleteTemplateSelector ?? (s => s); + deleteTemplateSelector = deleteTemplateSelector ?? (s => s); return this.Dispatch( d => deleteTemplateSelector(d.Name(name)), - (p, d) => this.RawDispatch.IndicesDeleteTemplateDispatch(p) + (p, d) => this.RawDispatch.IndicesDeleteTemplateDispatch(p) ); } - + public Task DeleteTemplateAync(string name, Func deleteTemplateSelector = null) { - deleteTemplateSelector = deleteTemplateSelector ?? (s => s); + deleteTemplateSelector = deleteTemplateSelector ?? (s => s); return this.DispatchAsync( d => deleteTemplateSelector(d.Name(name)), - (p, d) => this.RawDispatch.IndicesDeleteTemplateDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesDeleteTemplateDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient-Update.cs b/src/Nest/ElasticClient-Update.cs index b664e134639..2ec5b865c34 100644 --- a/src/Nest/ElasticClient-Update.cs +++ b/src/Nest/ElasticClient-Update.cs @@ -18,7 +18,7 @@ public IUpdateResponse Update(Func, UpdateDescripto { return this.Dispatch, UpdateQueryString, UpdateResponse>( updateSelector, - (p, d) => this.RawDispatch.UpdateDispatch(p, d) + (p, d) => this.RawDispatch.UpdateDispatch(p, d) ); } @@ -32,7 +32,7 @@ public Task UpdateAsync(Func, Upda { return this.DispatchAsync, UpdateQueryString, UpdateResponse, IUpdateResponse>( updateSelector, - (p, d) => this.RawDispatch.UpdateDispatchAsync(p, d) + (p, d) => this.RawDispatch.UpdateDispatchAsync(p, d) ); } } diff --git a/src/Nest/ElasticClient-UpdateSettings.cs b/src/Nest/ElasticClient-UpdateSettings.cs index aaa3ec27005..33fdbd0ae63 100644 --- a/src/Nest/ElasticClient-UpdateSettings.cs +++ b/src/Nest/ElasticClient-UpdateSettings.cs @@ -19,7 +19,7 @@ Func updateSettingsSelector { return this.Dispatch( updateSettingsSelector, - (p, d) => this.RawDispatch.IndicesPutSettingsDispatch(p, d) + (p, d) => this.RawDispatch.IndicesPutSettingsDispatch(p, d) ); } @@ -29,7 +29,7 @@ Func updateSettingsSelector { return this.DispatchAsync( updateSettingsSelector, - (p, d) => this.RawDispatch.IndicesPutSettingsDispatchAsync(p, d) + (p, d) => this.RawDispatch.IndicesPutSettingsDispatchAsync(p, d) ); } diff --git a/src/Nest/ElasticClient-Validate.cs b/src/Nest/ElasticClient-Validate.cs index b41d0d85b9c..906aa2fade1 100644 --- a/src/Nest/ElasticClient-Validate.cs +++ b/src/Nest/ElasticClient-Validate.cs @@ -17,7 +17,7 @@ public IValidateResponse Validate(Func, ValidateQu { return this.Dispatch, ValidateQueryQueryString, ValidateResponse>( querySelector, - (p, d) => this.RawDispatch.IndicesValidateQueryDispatch(p, d) + (p, d) => this.RawDispatch.IndicesValidateQueryDispatch(p, d) ); } @@ -29,7 +29,7 @@ public Task ValidateAsync(Func, { return this.DispatchAsync, ValidateQueryQueryString, ValidateResponse, IValidateResponse>( querySelector, - (p, d) => this.RawDispatch.IndicesValidateQueryDispatchAsync(p, d) + (p, d) => this.RawDispatch.IndicesValidateQueryDispatchAsync(p, d) ); } diff --git a/src/Nest/ElasticClient-Warmers.cs b/src/Nest/ElasticClient-Warmers.cs index 9a41eb9d17b..907cfa3ac1e 100644 --- a/src/Nest/ElasticClient-Warmers.cs +++ b/src/Nest/ElasticClient-Warmers.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Configuration; +using System.IO; using System.Linq; using System.Threading.Tasks; using Elasticsearch.Net; @@ -9,6 +10,7 @@ namespace Nest { + using GetWarmerConverter = Func; public partial class ElasticClient { public IIndicesOperationResponse PutWarmer(string name, Func selector) @@ -16,7 +18,7 @@ public IIndicesOperationResponse PutWarmer(string name, Func( d => selector(d.Name(name).AllIndices()), - (p, d) => this.RawDispatch.IndicesPutWarmerDispatch(p, d) + (p, d) => this.RawDispatch.IndicesPutWarmerDispatch(p, d) ); } @@ -25,7 +27,7 @@ public Task PutWarmerAsync(string name, Func( d => selector(d.Name(name).AllIndices()), - (p, d) => this.RawDispatch.IndicesPutWarmerDispatchAsync(p, d) + (p, d) => this.RawDispatch.IndicesPutWarmerDispatchAsync(p, d) ); } @@ -34,8 +36,10 @@ public IWarmerResponse GetWarmer(string name, Func s); return this.Dispatch( d => selector(d.Name(name).AllIndices()), - (p, d) => this.RawDispatch.IndicesGetWarmerDispatch(p), - this.Serializer.DeserializeWarmerResponse + (p, d) => this.RawDispatch.IndicesGetWarmerDispatch( + p, + new GetWarmerConverter(this.DeserializeWarmerResponse) + ) ); } @@ -44,17 +48,47 @@ public Task GetWarmerAsync(string name, Func s); return this.DispatchAsync( d => selector(d.Name(name).AllIndices()), - (p, d) => this.RawDispatch.IndicesGetWarmerDispatchAsync(p), - this.Serializer.DeserializeWarmerResponse + (p, d) => this.RawDispatch.IndicesGetWarmerDispatchAsync( + p, + new GetWarmerConverter(this.DeserializeWarmerResponse) + ) ); } + + private WarmerResponse DeserializeWarmerResponse(IElasticsearchResponse connectionStatus, Stream stream) + { + if (!connectionStatus.Success) + return new WarmerResponse() { ConnectionStatus = connectionStatus, IsValid = false }; + + var dict = this.Serializer.DeserializeInternal>>>(stream); + var indices = new Dictionary>(); + foreach (var kv in dict) + { + var indexDict = kv.Value; + Dictionary warmers; + if (indexDict == null || !indexDict.TryGetValue("warmers", out warmers) || warmers == null) + continue; + foreach (var kvW in warmers) + { + kvW.Value.Name = kvW.Key; + } + indices.Add(kv.Key, warmers); + } + return new WarmerResponse + { + ConnectionStatus = connectionStatus, + IsValid = true, + Indices = indices + }; + } + public IIndicesOperationResponse DeleteWarmer(string name, Func selector = null) { selector = selector ?? (s => s); return this.Dispatch( d => selector(d.Name(name).AllIndices()), - (p, d) => this.RawDispatch.IndicesDeleteWarmerDispatch(p) + (p, d) => this.RawDispatch.IndicesDeleteWarmerDispatch(p) ); } @@ -63,7 +97,7 @@ public Task DeleteWarmerAsync(string name, Func s); return this.DispatchAsync( d => selector(d.Name(name).AllIndices()), - (p, d) => this.RawDispatch.IndicesDeleteWarmerDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesDeleteWarmerDispatchAsync(p) ); } } diff --git a/src/Nest/ElasticClient.cs b/src/Nest/ElasticClient.cs index a0d51d2d3f6..06053c78c25 100644 --- a/src/Nest/ElasticClient.cs +++ b/src/Nest/ElasticClient.cs @@ -47,8 +47,8 @@ public ElasticClient(IConnectionSettingsValues settings, IConnection connection private R Dispatch( Func selector - , Func, D, ElasticsearchResponse> dispatch - , Func resultSelector = null + , Func, D, ElasticsearchResponse> dispatch + , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -63,8 +63,8 @@ Func selector private R Dispatch( D descriptor - , Func, D, ElasticsearchResponse> dispatch - , Func resultSelector = null + , Func, D, ElasticsearchResponse> dispatch + , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -72,15 +72,15 @@ D descriptor where R : BaseResponse { var pathInfo = descriptor.ToPathInfo(this._connectionSettings); - resultSelector = resultSelector ?? ((c, d) => this.Serializer.ToParsedResponse(c, allow404)); + resultSelector = resultSelector ?? ((c, d) => c.Response); var response = dispatch(pathInfo, descriptor); return resultSelector(response, descriptor); } internal Task DispatchAsync( Func selector - , Func, D, Task> dispatch - , Func resultSelector = null + , Func, D, Task>> dispatch + , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -95,8 +95,8 @@ Func selector private Task DispatchAsync( D descriptor - , Func, D, Task> dispatch - , Func resultSelector = null + , Func, D, Task>> dispatch + , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -105,7 +105,7 @@ D descriptor where I : IResponse { var pathInfo = descriptor.ToPathInfo(this._connectionSettings); - resultSelector = resultSelector ?? ((c, d) => this.Serializer.ToParsedResponse(c, allow404)); + resultSelector = resultSelector ?? ((c, d) => c.Response); return dispatch(pathInfo, descriptor) .ContinueWith(r => resultSelector(r.Result, descriptor)); } diff --git a/src/Nest/Exception/ReindexException.cs b/src/Nest/Exception/ReindexException.cs index 9482bab7540..1b8860ef764 100644 --- a/src/Nest/Exception/ReindexException.cs +++ b/src/Nest/Exception/ReindexException.cs @@ -5,9 +5,9 @@ namespace Nest { public class ReindexException: Exception { - public ElasticsearchResponse Status { get; private set; } + public IElasticsearchResponse Status { get; private set; } - public ReindexException(ElasticsearchResponse status, string message = null) : base(message) + public ReindexException(IElasticsearchResponse status, string message = null) : base(message) { this.Status = status; } diff --git a/src/Nest/ExposedInternals/INestSerializer.cs b/src/Nest/ExposedInternals/INestSerializer.cs index cb0af864e2f..b629ba010ed 100644 --- a/src/Nest/ExposedInternals/INestSerializer.cs +++ b/src/Nest/ExposedInternals/INestSerializer.cs @@ -2,6 +2,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.IO; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; @@ -17,9 +18,9 @@ namespace Nest { public interface INestSerializer : IElasticsearchSerializer { - IQueryResponse DeserializeSearchResponse(ElasticsearchResponse status, SearchDescriptor originalSearchDescriptor) - where TResult : class - where T : class; + //IQueryResponse DeserializeSearchResponse(ElasticsearchResponse status, SearchDescriptor originalSearchDescriptor) + // where TResult : class + // where T : class; string SerializeBulkDescriptor(BulkDescriptor bulkDescriptor); @@ -28,19 +29,24 @@ IQueryResponse DeserializeSearchResponse(ElasticsearchRespo ///
string SerializeMultiSearch(MultiSearchDescriptor multiSearchDescriptor); - TemplateResponse DeserializeTemplateResponse(ElasticsearchResponse c, GetTemplateDescriptor d); - GetMappingResponse DeserializeGetMappingResponse(ElasticsearchResponse c); - MultiGetResponse DeserializeMultiGetResponse(ElasticsearchResponse c, MultiGetDescriptor d); - MultiSearchResponse DeserializeMultiSearchResponse(ElasticsearchResponse c, MultiSearchDescriptor d); - WarmerResponse DeserializeWarmerResponse(ElasticsearchResponse connectionStatus, GetWarmerDescriptor getWarmerDescriptor); /// - /// Returns a response of type R based on the connection status by trying parsing status.Result into R + /// Deserialize to type T bypassing checks for custom deserialization state and or BaseResponse return types. /// - R ToParsedResponse( - ElasticsearchResponse status, - bool notFoundIsAValidResponse = false, - JsonConverter piggyBackJsonConverter = null - ) where R : BaseResponse; + T DeserializeInternal(Stream stream); + //TemplateResponse DeserializeTemplateResponse(ElasticsearchResponse c, GetTemplateDescriptor d); + //GetMappingResponse DeserializeGetMappingResponse(ElasticsearchResponse c); + //MultiGetResponse DeserializeMultiGetResponse(ElasticsearchResponse c, MultiGetDescriptor d); + //MultiSearchResponse DeserializeMultiSearchResponse(ElasticsearchResponse c, MultiSearchDescriptor d); + //WarmerResponse DeserializeWarmerResponse(ElasticsearchResponse connectionStatus, GetWarmerDescriptor getWarmerDescriptor); + + ///// + ///// Returns a response of type R based on the connection status by trying parsing status.Result into R + ///// + //R ToParsedResponse( + // ElasticsearchResponse status, + // bool notFoundIsAValidResponse = false, + // JsonConverter piggyBackJsonConverter = null + // ) where R : BaseResponse; } } diff --git a/src/Nest/ExposedInternals/NestSerializer.cs b/src/Nest/ExposedInternals/NestSerializer.cs index 1e7b9f8e701..cbd9a067220 100644 --- a/src/Nest/ExposedInternals/NestSerializer.cs +++ b/src/Nest/ExposedInternals/NestSerializer.cs @@ -1,7 +1,10 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Security.Cryptography; using System.Text; +using System.Threading.Tasks; using Elasticsearch.Net; using Elasticsearch.Net.Serialization; using Nest.Resolvers; @@ -21,39 +24,39 @@ public NestSerializer(IConnectionSettingsValues settings) this._serializationSettings = this.CreateSettings(); } - /// - /// Returns a response of type R based on the connection status by trying parsing status.Result into R - /// - /// - public virtual R ToParsedResponse( - ElasticsearchResponse status, - bool notFoundIsAValidResponse = false, - JsonConverter piggyBackJsonConverter = null - ) where R : BaseResponse - { - var jsonSettings =piggyBackJsonConverter != null - ? this.CreateSettings(piggyBackJsonConverter) - : this._serializationSettings; + ///// + ///// Returns a response of type R based on the connection status by trying parsing status.Result into R + ///// + ///// + //public virtual R ToParsedResponse( + // ElasticsearchResponse status, + // bool notFoundIsAValidResponse = false, + // JsonConverter piggyBackJsonConverter = null + // ) where R : BaseResponse + //{ + // var jsonSettings =piggyBackJsonConverter != null + // ? this.CreateSettings(piggyBackJsonConverter) + // : this._serializationSettings; - var isValid = - (notFoundIsAValidResponse) - ? (status.Error == null - || status.Error.HttpStatusCode == System.Net.HttpStatusCode.NotFound) - : (status.Error == null); - - R r; - if (!isValid) - r = (R)typeof (R).CreateInstance(); - else - r = JsonConvert.DeserializeObject(status.Result, jsonSettings); - - var baseResponse = r as BaseResponse; - if (baseResponse == null) - return null; - baseResponse.IsValid = isValid; - baseResponse.ConnectionStatus = status; - return r; - } + // var isValid = + // (notFoundIsAValidResponse) + // ? (status.Error == null + // || status.Error.HttpStatusCode == System.Net.HttpStatusCode.NotFound) + // : (status.Error == null); + + // R r; + // if (!isValid) + // r = (R)typeof (R).CreateInstance(); + // else + // r = JsonConvert.DeserializeObject(status.Result, jsonSettings); + + // var baseResponse = r as BaseResponse; + // if (baseResponse == null) + // return null; + // baseResponse.IsValid = isValid; + // baseResponse.ConnectionStatus = status; + // return r; + //} public virtual byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented) { @@ -65,41 +68,60 @@ public virtual byte[] Serialize(object data, SerializationFormatting formatting /// /// Deserialize an object /// - /// When deserializing a ConnectionStatus to a BaseResponse type this controls whether a 404 is a valid response - public virtual T Deserialize(byte[] bytes) where T : class - { - if (bytes == null) return null; - return JsonConvert.DeserializeObject(bytes.Utf8String(), this._serializationSettings); - } - - public IQueryResponse DeserializeSearchResponse(ElasticsearchResponse status, SearchDescriptor originalSearchDescriptor) - where TResult : class - where T : class + public virtual T Deserialize(IElasticsearchResponse response, Stream stream, object deserializationState = null) { - var types = (originalSearchDescriptor._Types ?? Enumerable.Empty()) - .Where(t => t.Type != null); - if (originalSearchDescriptor._ConcreteTypeSelector == null && types.Any(t => t.Type != typeof(TResult))) + var settings = this._serializationSettings; + var customConverter = deserializationState as Func; + if (customConverter != null) { - var inferrer = new ElasticInferrer(this._settings); - var typeDictionary = types - .ToDictionary(inferrer.TypeName, t => t.Type); - - originalSearchDescriptor._ConcreteTypeSelector = (o, h) => - { - Type t; - if (!typeDictionary.TryGetValue(h.Type, out t)) - return typeof(TResult); - return t; - }; + var t = customConverter(response, stream); + return t; } - if (originalSearchDescriptor._ConcreteTypeSelector == null) - return this.ToParsedResponse>(status, piggyBackJsonConverter: null, notFoundIsAValidResponse: true); + var state = deserializationState as JsonConverter; + if (state != null) + settings = this.CreateSettings(state); - var concreteTypeConverter = new ConcreteTypeConverter(originalSearchDescriptor._ConcreteTypeSelector); - return this.ToParsedResponse>(status, piggyBackJsonConverter: concreteTypeConverter, notFoundIsAValidResponse: true); + return _Deserialize(response, stream, settings); } + /// + /// Deserialize to type T bypassing checks for custom deserialization state and or BaseResponse return types. + /// + public T DeserializeInternal(Stream stream) + { + var serializer = JsonSerializer.Create(this._serializationSettings); + var jsonTextReader = new JsonTextReader(new StreamReader(stream)); + var t = (T) serializer.Deserialize(jsonTextReader, typeof (T)); + return t; + + } + + protected internal T _Deserialize(IElasticsearchResponse response, Stream stream, JsonSerializerSettings settings = null) + { + settings = settings ?? _serializationSettings; + var serializer = JsonSerializer.Create(settings); + var jsonTextReader = new JsonTextReader(new StreamReader(stream)); + var t = (T) serializer.Deserialize(jsonTextReader, typeof (T)); + var r = t as BaseResponse; + if (r != null) + { + r.ConnectionStatus = response; + } + return t; + } + + public virtual Task DeserializeAsync(IElasticsearchResponse response, Stream stream, object deserializationState = null) + { + //TODO sadly json .net async does not read the stream async so + //figure out wheter reading the stream async on our own might be beneficial + //over memory possible memory usage + var tcs = new TaskCompletionSource(); + var r = this.Deserialize(response, stream, deserializationState); + tcs.SetResult(r); + return tcs.Task; + } + internal JsonSerializerSettings CreateSettings(JsonConverter piggyBackJsonConverter = null) { var piggyBackState = new JsonConverterPiggyBackState { ActualJsonConverter = piggyBackJsonConverter }; @@ -202,73 +224,6 @@ public string SerializeMultiSearch(MultiSearchDescriptor multiSearchDescriptor) return json; } - public TemplateResponse DeserializeTemplateResponse(ElasticsearchResponse c, GetTemplateDescriptor d) - { - if (!c.Success) return new TemplateResponse { ConnectionStatus = c, IsValid = false }; - - var dict = c.Deserialize>(); - if (dict.Count == 0) - throw new DslException("Could not deserialize TemplateMapping"); - - return new TemplateResponse - { - ConnectionStatus = c, - IsValid = true, - Name = dict.First().Key, - TemplateMapping = dict.First().Value - }; - } - - public GetMappingResponse DeserializeGetMappingResponse(ElasticsearchResponse c) - { - var dict = c.Success - ? c.Deserialize() - : null; - return new GetMappingResponse(c, dict); - - } - - public MultiGetResponse DeserializeMultiGetResponse(ElasticsearchResponse c, MultiGetDescriptor d) - { - var multiGetHitConverter = new MultiGetHitConverter(d); - var multiGetResponse = this.ToParsedResponse(c, piggyBackJsonConverter: multiGetHitConverter); - return multiGetResponse; - } - - public MultiSearchResponse DeserializeMultiSearchResponse(ElasticsearchResponse c, MultiSearchDescriptor d) - { - var multiSearchConverter = new MultiSearchConverter(this._settings, d); - var multiSearchResponse = this.ToParsedResponse(c, piggyBackJsonConverter: multiSearchConverter); - return multiSearchResponse; - } - - public WarmerResponse DeserializeWarmerResponse(ElasticsearchResponse connectionStatus, GetWarmerDescriptor getWarmerDescriptor) - { - if (!connectionStatus.Success) - return new WarmerResponse() { ConnectionStatus = connectionStatus, IsValid = false }; - - var dict = connectionStatus.Deserialize>>>(); - var indices = new Dictionary>(); - foreach (var kv in dict) - { - var indexDict = kv.Value; - Dictionary warmers; - if (indexDict == null || !indexDict.TryGetValue("warmers", out warmers) || warmers == null) - continue; - foreach (var kvW in warmers) - { - kvW.Value.Name = kvW.Key; - } - indices.Add(kv.Key, warmers); - } - - return new WarmerResponse - { - ConnectionStatus = connectionStatus, - IsValid = true, - Indices = indices - }; - } protected string GetSearchType(SearchDescriptorBase descriptor, MultiSearchDescriptor multiSearchDescriptor) { diff --git a/src/Nest/RawDispatch.generated.cs b/src/Nest/RawDispatch.generated.cs index b5c37d41439..fab0c7bcc89 100644 --- a/src/Nest/RawDispatch.generated.cs +++ b/src/Nest/RawDispatch.generated.cs @@ -18,32 +18,32 @@ internal partial class RawDispatch { - internal ElasticsearchResponse BulkDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse BulkDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Bulk(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Bulk(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Bulk(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Bulk(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_bulk if (body != null) - return this.Raw.Bulk(body,u => pathInfo.QueryString); + return this.Raw.Bulk(body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.BulkPut(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.BulkPut(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //PUT /{index}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.BulkPut(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.BulkPut(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //PUT /_bulk if (body != null) - return this.Raw.BulkPut(body,u => pathInfo.QueryString); + return this.Raw.BulkPut(body,u => pathInfo.QueryString, deserializationState); break; } @@ -51,32 +51,32 @@ internal ElasticsearchResponse BulkDispatch(ElasticsearchPathInfo BulkDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> BulkDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.BulkAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.BulkAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.BulkAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.BulkAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_bulk if (body != null) - return this.Raw.BulkAsync(body,u => pathInfo.QueryString); + return this.Raw.BulkAsync(body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.BulkPutAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.BulkPutAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //PUT /{index}/_bulk if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.BulkPutAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.BulkPutAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //PUT /_bulk if (body != null) - return this.Raw.BulkPutAsync(body,u => pathInfo.QueryString); + return this.Raw.BulkPutAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -84,362 +84,362 @@ internal Task BulkDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatAliasesDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/aliases/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.CatAliases(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.CatAliases(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_cat/aliases - return this.Raw.CatAliases(u => pathInfo.QueryString); + return this.Raw.CatAliases(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatAliases() into any of the following paths: \r\n - /_cat/aliases\r\n - /_cat/aliases/{name}"); } - internal Task CatAliasesDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatAliasesDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/aliases/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.CatAliasesAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.CatAliasesAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_cat/aliases - return this.Raw.CatAliasesAsync(u => pathInfo.QueryString); + return this.Raw.CatAliasesAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatAliases() into any of the following paths: \r\n - /_cat/aliases\r\n - /_cat/aliases/{name}"); } - internal ElasticsearchResponse CatAllocationDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatAllocationDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/allocation/{node_id} if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.CatAllocation(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.CatAllocation(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_cat/allocation - return this.Raw.CatAllocation(u => pathInfo.QueryString); + return this.Raw.CatAllocation(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatAllocation() into any of the following paths: \r\n - /_cat/allocation\r\n - /_cat/allocation/{node_id}"); } - internal Task CatAllocationDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatAllocationDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/allocation/{node_id} if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.CatAllocationAsync(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.CatAllocationAsync(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_cat/allocation - return this.Raw.CatAllocationAsync(u => pathInfo.QueryString); + return this.Raw.CatAllocationAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatAllocation() into any of the following paths: \r\n - /_cat/allocation\r\n - /_cat/allocation/{node_id}"); } - internal ElasticsearchResponse CatCountDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatCountDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/count/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatCount(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatCount(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/count - return this.Raw.CatCount(u => pathInfo.QueryString); + return this.Raw.CatCount(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatCount() into any of the following paths: \r\n - /_cat/count\r\n - /_cat/count/{index}"); } - internal Task CatCountDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatCountDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/count/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatCountAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatCountAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/count - return this.Raw.CatCountAsync(u => pathInfo.QueryString); + return this.Raw.CatCountAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatCount() into any of the following paths: \r\n - /_cat/count\r\n - /_cat/count/{index}"); } - internal ElasticsearchResponse CatHealthDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatHealthDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/health - return this.Raw.CatHealth(u => pathInfo.QueryString); + return this.Raw.CatHealth(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatHealth() into any of the following paths: \r\n - /_cat/health"); } - internal Task CatHealthDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatHealthDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/health - return this.Raw.CatHealthAsync(u => pathInfo.QueryString); + return this.Raw.CatHealthAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatHealth() into any of the following paths: \r\n - /_cat/health"); } - internal ElasticsearchResponse CatHelpDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatHelpDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat - return this.Raw.CatHelp(u => pathInfo.QueryString); + return this.Raw.CatHelp(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatHelp() into any of the following paths: \r\n - /_cat"); } - internal Task CatHelpDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatHelpDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat - return this.Raw.CatHelpAsync(u => pathInfo.QueryString); + return this.Raw.CatHelpAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatHelp() into any of the following paths: \r\n - /_cat"); } - internal ElasticsearchResponse CatIndicesDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatIndicesDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/indices/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatIndices(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatIndices(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/indices - return this.Raw.CatIndices(u => pathInfo.QueryString); + return this.Raw.CatIndices(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatIndices() into any of the following paths: \r\n - /_cat/indices\r\n - /_cat/indices/{index}"); } - internal Task CatIndicesDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatIndicesDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/indices/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatIndicesAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatIndicesAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/indices - return this.Raw.CatIndicesAsync(u => pathInfo.QueryString); + return this.Raw.CatIndicesAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatIndices() into any of the following paths: \r\n - /_cat/indices\r\n - /_cat/indices/{index}"); } - internal ElasticsearchResponse CatMasterDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatMasterDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/master - return this.Raw.CatMaster(u => pathInfo.QueryString); + return this.Raw.CatMaster(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatMaster() into any of the following paths: \r\n - /_cat/master"); } - internal Task CatMasterDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatMasterDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/master - return this.Raw.CatMasterAsync(u => pathInfo.QueryString); + return this.Raw.CatMasterAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatMaster() into any of the following paths: \r\n - /_cat/master"); } - internal ElasticsearchResponse CatNodesDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatNodesDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/nodes - return this.Raw.CatNodes(u => pathInfo.QueryString); + return this.Raw.CatNodes(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatNodes() into any of the following paths: \r\n - /_cat/nodes"); } - internal Task CatNodesDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatNodesDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/nodes - return this.Raw.CatNodesAsync(u => pathInfo.QueryString); + return this.Raw.CatNodesAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatNodes() into any of the following paths: \r\n - /_cat/nodes"); } - internal ElasticsearchResponse CatPendingTasksDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatPendingTasksDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/pending_tasks - return this.Raw.CatPendingTasks(u => pathInfo.QueryString); + return this.Raw.CatPendingTasks(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatPendingTasks() into any of the following paths: \r\n - /_cat/pending_tasks"); } - internal Task CatPendingTasksDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatPendingTasksDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/pending_tasks - return this.Raw.CatPendingTasksAsync(u => pathInfo.QueryString); + return this.Raw.CatPendingTasksAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatPendingTasks() into any of the following paths: \r\n - /_cat/pending_tasks"); } - internal ElasticsearchResponse CatRecoveryDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatRecoveryDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/recovery/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatRecovery(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatRecovery(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/recovery - return this.Raw.CatRecovery(u => pathInfo.QueryString); + return this.Raw.CatRecovery(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatRecovery() into any of the following paths: \r\n - /_cat/recovery\r\n - /_cat/recovery/{index}"); } - internal Task CatRecoveryDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatRecoveryDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/recovery/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatRecoveryAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatRecoveryAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/recovery - return this.Raw.CatRecoveryAsync(u => pathInfo.QueryString); + return this.Raw.CatRecoveryAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatRecovery() into any of the following paths: \r\n - /_cat/recovery\r\n - /_cat/recovery/{index}"); } - internal ElasticsearchResponse CatShardsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatShardsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/shards/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatShards(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatShards(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/shards - return this.Raw.CatShards(u => pathInfo.QueryString); + return this.Raw.CatShards(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatShards() into any of the following paths: \r\n - /_cat/shards\r\n - /_cat/shards/{index}"); } - internal Task CatShardsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatShardsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/shards/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CatShardsAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CatShardsAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cat/shards - return this.Raw.CatShardsAsync(u => pathInfo.QueryString); + return this.Raw.CatShardsAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatShards() into any of the following paths: \r\n - /_cat/shards\r\n - /_cat/shards/{index}"); } - internal ElasticsearchResponse CatThreadPoolDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse CatThreadPoolDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/thread_pool - return this.Raw.CatThreadPool(u => pathInfo.QueryString); + return this.Raw.CatThreadPool(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatThreadPool() into any of the following paths: \r\n - /_cat/thread_pool"); } - internal Task CatThreadPoolDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> CatThreadPoolDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cat/thread_pool - return this.Raw.CatThreadPoolAsync(u => pathInfo.QueryString); + return this.Raw.CatThreadPoolAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.CatThreadPool() into any of the following paths: \r\n - /_cat/thread_pool"); } - internal ElasticsearchResponse ClearScrollDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ClearScrollDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_search/scroll/{scroll_id} if (!pathInfo.ScrollId.IsNullOrEmpty()) - return this.Raw.ClearScroll(pathInfo.ScrollId,u => pathInfo.QueryString); + return this.Raw.ClearScroll(pathInfo.ScrollId,u => pathInfo.QueryString, deserializationState); break; } @@ -447,14 +447,14 @@ internal ElasticsearchResponse ClearScrollDispatch(ElasticsearchPathInfo ClearScrollDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ClearScrollDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_search/scroll/{scroll_id} if (!pathInfo.ScrollId.IsNullOrEmpty()) - return this.Raw.ClearScrollAsync(pathInfo.ScrollId,u => pathInfo.QueryString); + return this.Raw.ClearScrollAsync(pathInfo.ScrollId,u => pathInfo.QueryString, deserializationState); break; } @@ -462,98 +462,98 @@ internal Task ClearScrollDispatchAsync(ElasticsearchPathI } - internal ElasticsearchResponse ClusterGetSettingsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ClusterGetSettingsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/settings - return this.Raw.ClusterGetSettings(u => pathInfo.QueryString); + return this.Raw.ClusterGetSettings(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterGetSettings() into any of the following paths: \r\n - /_cluster/settings"); } - internal Task ClusterGetSettingsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ClusterGetSettingsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/settings - return this.Raw.ClusterGetSettingsAsync(u => pathInfo.QueryString); + return this.Raw.ClusterGetSettingsAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterGetSettings() into any of the following paths: \r\n - /_cluster/settings"); } - internal ElasticsearchResponse ClusterHealthDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ClusterHealthDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/health/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.ClusterHealth(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.ClusterHealth(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cluster/health - return this.Raw.ClusterHealth(u => pathInfo.QueryString); + return this.Raw.ClusterHealth(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterHealth() into any of the following paths: \r\n - /_cluster/health\r\n - /_cluster/health/{index}"); } - internal Task ClusterHealthDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ClusterHealthDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/health/{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.ClusterHealthAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.ClusterHealthAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cluster/health - return this.Raw.ClusterHealthAsync(u => pathInfo.QueryString); + return this.Raw.ClusterHealthAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterHealth() into any of the following paths: \r\n - /_cluster/health\r\n - /_cluster/health/{index}"); } - internal ElasticsearchResponse ClusterPendingTasksDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ClusterPendingTasksDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/pending_tasks - return this.Raw.ClusterPendingTasks(u => pathInfo.QueryString); + return this.Raw.ClusterPendingTasks(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterPendingTasks() into any of the following paths: \r\n - /_cluster/pending_tasks"); } - internal Task ClusterPendingTasksDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ClusterPendingTasksDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/pending_tasks - return this.Raw.ClusterPendingTasksAsync(u => pathInfo.QueryString); + return this.Raw.ClusterPendingTasksAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterPendingTasks() into any of the following paths: \r\n - /_cluster/pending_tasks"); } - internal ElasticsearchResponse ClusterPutSettingsDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse ClusterPutSettingsDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_cluster/settings if (body != null) - return this.Raw.ClusterPutSettings(body,u => pathInfo.QueryString); + return this.Raw.ClusterPutSettings(body,u => pathInfo.QueryString, deserializationState); break; } @@ -561,14 +561,14 @@ internal ElasticsearchResponse ClusterPutSettingsDispatch(ElasticsearchPathInfo< } - internal Task ClusterPutSettingsDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> ClusterPutSettingsDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_cluster/settings if (body != null) - return this.Raw.ClusterPutSettingsAsync(body,u => pathInfo.QueryString); + return this.Raw.ClusterPutSettingsAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -576,14 +576,14 @@ internal Task ClusterPutSettingsDispatchAsync(Elasticsear } - internal ElasticsearchResponse ClusterRerouteDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse ClusterRerouteDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_cluster/reroute if (body != null) - return this.Raw.ClusterReroute(body,u => pathInfo.QueryString); + return this.Raw.ClusterReroute(body,u => pathInfo.QueryString, deserializationState); break; } @@ -591,14 +591,14 @@ internal ElasticsearchResponse ClusterRerouteDispatch(ElasticsearchPathInfo ClusterRerouteDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> ClusterRerouteDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_cluster/reroute if (body != null) - return this.Raw.ClusterRerouteAsync(body,u => pathInfo.QueryString); + return this.Raw.ClusterRerouteAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -606,158 +606,158 @@ internal Task ClusterRerouteDispatchAsync(ElasticsearchPa } - internal ElasticsearchResponse ClusterStateDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ClusterStateDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/state/{metric}/{index} if (!pathInfo.Metric.IsNullOrEmpty() && !pathInfo.Index.IsNullOrEmpty()) - return this.Raw.ClusterState(pathInfo.Metric,pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.ClusterState(pathInfo.Metric,pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cluster/state/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.ClusterState(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.ClusterState(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_cluster/state - return this.Raw.ClusterState(u => pathInfo.QueryString); + return this.Raw.ClusterState(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterState() into any of the following paths: \r\n - /_cluster/state\r\n - /_cluster/state/{metric}\r\n - /_cluster/state/{metric}/{index}"); } - internal Task ClusterStateDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ClusterStateDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/state/{metric}/{index} if (!pathInfo.Metric.IsNullOrEmpty() && !pathInfo.Index.IsNullOrEmpty()) - return this.Raw.ClusterStateAsync(pathInfo.Metric,pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.ClusterStateAsync(pathInfo.Metric,pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cluster/state/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.ClusterStateAsync(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.ClusterStateAsync(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_cluster/state - return this.Raw.ClusterStateAsync(u => pathInfo.QueryString); + return this.Raw.ClusterStateAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterState() into any of the following paths: \r\n - /_cluster/state\r\n - /_cluster/state/{metric}\r\n - /_cluster/state/{metric}/{index}"); } - internal ElasticsearchResponse ClusterStatsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ClusterStatsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/stats/nodes/{node_id} if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.ClusterStats(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.ClusterStats(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_cluster/stats - return this.Raw.ClusterStats(u => pathInfo.QueryString); + return this.Raw.ClusterStats(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterStats() into any of the following paths: \r\n - /_cluster/stats\r\n - /_cluster/stats/nodes/{node_id}"); } - internal Task ClusterStatsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ClusterStatsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/stats/nodes/{node_id} if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.ClusterStatsAsync(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.ClusterStatsAsync(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_cluster/stats - return this.Raw.ClusterStatsAsync(u => pathInfo.QueryString); + return this.Raw.ClusterStatsAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.ClusterStats() into any of the following paths: \r\n - /_cluster/stats\r\n - /_cluster/stats/nodes/{node_id}"); } - internal ElasticsearchResponse CountDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse CountDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/_count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Count(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Count(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_count if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Count(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Count(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_count if (body != null) - return this.Raw.Count(body,u => pathInfo.QueryString); + return this.Raw.Count(body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.GET: //GET /{index}/{type}/_count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.CountGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.CountGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_count if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CountGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CountGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_count - return this.Raw.CountGet(u => pathInfo.QueryString); + return this.Raw.CountGet(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Count() into any of the following paths: \r\n - /_count\r\n - /{index}/_count\r\n - /{index}/{type}/_count"); } - internal Task CountDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> CountDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/_count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.CountAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.CountAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_count if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.CountAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.CountAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_count if (body != null) - return this.Raw.CountAsync(body,u => pathInfo.QueryString); + return this.Raw.CountAsync(body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.GET: //GET /{index}/{type}/_count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.CountGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.CountGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_count if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.CountGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.CountGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_count - return this.Raw.CountGetAsync(u => pathInfo.QueryString); + return this.Raw.CountGetAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Count() into any of the following paths: \r\n - /_count\r\n - /{index}/_count\r\n - /{index}/{type}/_count"); } - internal ElasticsearchResponse CountPercolateDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse CountPercolateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.CountPercolateGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.CountPercolateGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); //GET /{index}/{type}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.CountPercolateGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.CountPercolateGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.CountPercolate(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.CountPercolate(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/{type}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.CountPercolate(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.CountPercolate(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -765,26 +765,26 @@ internal ElasticsearchResponse CountPercolateDispatch(ElasticsearchPathInfo CountPercolateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> CountPercolateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.CountPercolateGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.CountPercolateGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); //GET /{index}/{type}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.CountPercolateGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.CountPercolateGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.CountPercolateAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.CountPercolateAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/{type}/_percolate/count if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.CountPercolateAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.CountPercolateAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -792,14 +792,14 @@ internal Task CountPercolateDispatchAsync(ElasticsearchPa } - internal ElasticsearchResponse DeleteDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse DeleteDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.Delete(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.Delete(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -807,14 +807,14 @@ internal ElasticsearchResponse DeleteDispatch(ElasticsearchPathInfo DeleteDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> DeleteDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.DeleteAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.DeleteAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -822,17 +822,17 @@ internal Task DeleteDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse DeleteByQueryDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/{type}/_query if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.DeleteByQuery(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.DeleteByQuery(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //DELETE /{index}/_query if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.DeleteByQuery(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.DeleteByQuery(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); break; } @@ -840,17 +840,17 @@ internal ElasticsearchResponse DeleteByQueryDispatch(ElasticsearchPathInfo DeleteByQueryDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> DeleteByQueryDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/{type}/_query if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.DeleteByQueryAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.DeleteByQueryAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //DELETE /{index}/_query if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.DeleteByQueryAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.DeleteByQueryAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); break; } @@ -858,14 +858,14 @@ internal Task DeleteByQueryDispatchAsync(ElasticsearchPat } - internal ElasticsearchResponse ExistsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse ExistsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.Exists(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.Exists(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -873,14 +873,14 @@ internal ElasticsearchResponse ExistsDispatch(ElasticsearchPathInfo ExistsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> ExistsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.ExistsAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.ExistsAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -888,20 +888,20 @@ internal Task ExistsDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse ExplainDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_explain if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.ExplainGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.ExplainGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_explain if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.Explain(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.Explain(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -909,20 +909,20 @@ internal ElasticsearchResponse ExplainDispatch(ElasticsearchPathInfo ExplainDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> ExplainDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_explain if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.ExplainGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.ExplainGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_explain if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.ExplainAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.ExplainAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -930,14 +930,14 @@ internal Task ExplainDispatchAsync(ElasticsearchPathInfo< } - internal ElasticsearchResponse GetDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse GetDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.Get(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.Get(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -945,14 +945,14 @@ internal ElasticsearchResponse GetDispatch(ElasticsearchPathInfo } - internal Task GetDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> GetDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.GetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.GetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -960,14 +960,14 @@ internal Task GetDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse GetSourceDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_source if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.GetSource(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.GetSource(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -975,14 +975,14 @@ internal ElasticsearchResponse GetSourceDispatch(ElasticsearchPathInfo GetSourceDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> GetSourceDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_source if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.GetSourceAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.GetSourceAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; } @@ -990,26 +990,26 @@ internal Task GetSourceDispatchAsync(ElasticsearchPathInf } - internal ElasticsearchResponse IndexDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndexDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.Index(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.Index(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Index(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Index(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.IndexPut(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.IndexPut(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //PUT /{index}/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndexPut(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndexPut(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -1017,26 +1017,26 @@ internal ElasticsearchResponse IndexDispatch(ElasticsearchPathInfo IndexDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndexDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.IndexAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.IndexAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndexAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndexAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/{id} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.IndexPutAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.IndexPutAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //PUT /{index}/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndexPutAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndexPutAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -1044,24 +1044,24 @@ internal Task IndexDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesAnalyzeDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_analyze if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesAnalyzeGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_analyze - return this.Raw.IndicesAnalyzeGetForAll(u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeGetForAll(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/_analyze if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesAnalyze(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesAnalyze(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_analyze if (body != null) - return this.Raw.IndicesAnalyzeForAll(body,u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeForAll(body,u => pathInfo.QueryString, deserializationState); break; } @@ -1069,24 +1069,24 @@ internal ElasticsearchResponse IndicesAnalyzeDispatch(ElasticsearchPathInfo IndicesAnalyzeDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesAnalyzeDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_analyze if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesAnalyzeGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_analyze - return this.Raw.IndicesAnalyzeGetForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeGetForAllAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/_analyze if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesAnalyzeAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_analyze if (body != null) - return this.Raw.IndicesAnalyzeForAllAsync(body,u => pathInfo.QueryString); + return this.Raw.IndicesAnalyzeForAllAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -1094,60 +1094,60 @@ internal Task IndicesAnalyzeDispatchAsync(ElasticsearchPa } - internal ElasticsearchResponse IndicesClearCacheDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesClearCacheDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_cache/clear if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesClearCache(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesClearCache(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_cache/clear - return this.Raw.IndicesClearCacheForAll(u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheForAll(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_cache/clear if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesClearCacheGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cache/clear - return this.Raw.IndicesClearCacheGetForAll(u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheGetForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesClearCache() into any of the following paths: \r\n - /_cache/clear\r\n - /{index}/_cache/clear"); } - internal Task IndicesClearCacheDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesClearCacheDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_cache/clear if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesClearCacheAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_cache/clear - return this.Raw.IndicesClearCacheForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheForAllAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_cache/clear if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesClearCacheGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_cache/clear - return this.Raw.IndicesClearCacheGetForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesClearCacheGetForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesClearCache() into any of the following paths: \r\n - /_cache/clear\r\n - /{index}/_cache/clear"); } - internal ElasticsearchResponse IndicesCloseDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesCloseDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_close if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesClose(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesClose(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1155,14 +1155,14 @@ internal ElasticsearchResponse IndicesCloseDispatch(ElasticsearchPathInfo IndicesCloseDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesCloseDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_close if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesCloseAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesCloseAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1170,20 +1170,20 @@ internal Task IndicesCloseDispatchAsync(ElasticsearchPath } - internal ElasticsearchResponse IndicesCreateDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesCreateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index} if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesCreate(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesCreate(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index} if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesCreatePost(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesCreatePost(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); break; } @@ -1191,20 +1191,20 @@ internal ElasticsearchResponse IndicesCreateDispatch(ElasticsearchPathInfo IndicesCreateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesCreateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index} if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesCreateAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesCreateAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index} if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesCreatePostAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesCreatePostAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); break; } @@ -1212,14 +1212,14 @@ internal Task IndicesCreateDispatchAsync(ElasticsearchPat } - internal ElasticsearchResponse IndicesDeleteDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesDeleteDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesDelete(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesDelete(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1227,14 +1227,14 @@ internal ElasticsearchResponse IndicesDeleteDispatch(ElasticsearchPathInfo IndicesDeleteDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesDeleteDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesDeleteAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1242,14 +1242,14 @@ internal Task IndicesDeleteDispatchAsync(ElasticsearchPat } - internal ElasticsearchResponse IndicesDeleteAliasDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesDeleteAliasDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesDeleteAlias(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteAlias(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1257,14 +1257,14 @@ internal ElasticsearchResponse IndicesDeleteAliasDispatch(ElasticsearchPathInfo< } - internal Task IndicesDeleteAliasDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesDeleteAliasDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesDeleteAliasAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteAliasAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1272,14 +1272,14 @@ internal Task IndicesDeleteAliasDispatchAsync(Elasticsear } - internal ElasticsearchResponse IndicesDeleteMappingDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesDeleteMappingDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/{type}/_mapping if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesDeleteMapping(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteMapping(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; } @@ -1287,14 +1287,14 @@ internal ElasticsearchResponse IndicesDeleteMappingDispatch(ElasticsearchPathInf } - internal Task IndicesDeleteMappingDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesDeleteMappingDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/{type}/_mapping if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesDeleteMappingAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteMappingAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; } @@ -1302,14 +1302,14 @@ internal Task IndicesDeleteMappingDispatchAsync(Elasticse } - internal ElasticsearchResponse IndicesDeleteTemplateDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesDeleteTemplateDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_template/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesDeleteTemplateForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteTemplateForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1317,14 +1317,14 @@ internal ElasticsearchResponse IndicesDeleteTemplateDispatch(ElasticsearchPathIn } - internal Task IndicesDeleteTemplateDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesDeleteTemplateDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_template/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesDeleteTemplateForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteTemplateForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1332,14 +1332,14 @@ internal Task IndicesDeleteTemplateDispatchAsync(Elastics } - internal ElasticsearchResponse IndicesDeleteWarmerDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesDeleteWarmerDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesDeleteWarmer(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteWarmer(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1347,14 +1347,14 @@ internal ElasticsearchResponse IndicesDeleteWarmerDispatch(ElasticsearchPathInfo } - internal Task IndicesDeleteWarmerDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesDeleteWarmerDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesDeleteWarmerAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesDeleteWarmerAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1362,14 +1362,14 @@ internal Task IndicesDeleteWarmerDispatchAsync(Elasticsea } - internal ElasticsearchResponse IndicesExistsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesExistsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesExists(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesExists(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1377,14 +1377,14 @@ internal ElasticsearchResponse IndicesExistsDispatch(ElasticsearchPathInfo IndicesExistsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesExistsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index} if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesExistsAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1392,20 +1392,20 @@ internal Task IndicesExistsDispatchAsync(ElasticsearchPat } - internal ElasticsearchResponse IndicesExistsAliasDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesExistsAliasDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesExistsAlias(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAlias(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //HEAD /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesExistsAliasForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAliasForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //HEAD /{index}/_alias if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesExistsAlias(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAlias(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1413,20 +1413,20 @@ internal ElasticsearchResponse IndicesExistsAliasDispatch(ElasticsearchPathInfo< } - internal Task IndicesExistsAliasDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesExistsAliasDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesExistsAliasAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAliasAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //HEAD /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesExistsAliasForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAliasForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //HEAD /{index}/_alias if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesExistsAliasAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesExistsAliasAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1434,14 +1434,14 @@ internal Task IndicesExistsAliasDispatchAsync(Elasticsear } - internal ElasticsearchResponse IndicesExistsTemplateDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesExistsTemplateDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /_template/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesExistsTemplateForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesExistsTemplateForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1449,14 +1449,14 @@ internal ElasticsearchResponse IndicesExistsTemplateDispatch(ElasticsearchPathIn } - internal Task IndicesExistsTemplateDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesExistsTemplateDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /_template/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesExistsTemplateForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesExistsTemplateForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); break; } @@ -1464,14 +1464,14 @@ internal Task IndicesExistsTemplateDispatchAsync(Elastics } - internal ElasticsearchResponse IndicesExistsTypeDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesExistsTypeDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index}/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesExistsType(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesExistsType(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; } @@ -1479,14 +1479,14 @@ internal ElasticsearchResponse IndicesExistsTypeDispatch(ElasticsearchPathInfo IndicesExistsTypeDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesExistsTypeDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD /{index}/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesExistsTypeAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesExistsTypeAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; } @@ -1494,157 +1494,157 @@ internal Task IndicesExistsTypeDispatchAsync(Elasticsearc } - internal ElasticsearchResponse IndicesFlushDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesFlushDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_flush if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesFlush(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesFlush(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_flush - return this.Raw.IndicesFlushForAll(u => pathInfo.QueryString); + return this.Raw.IndicesFlushForAll(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_flush if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesFlushGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesFlushGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_flush - return this.Raw.IndicesFlushGetForAll(u => pathInfo.QueryString); + return this.Raw.IndicesFlushGetForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesFlush() into any of the following paths: \r\n - /_flush\r\n - /{index}/_flush"); } - internal Task IndicesFlushDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesFlushDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_flush if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesFlushAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesFlushAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_flush - return this.Raw.IndicesFlushForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesFlushForAllAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_flush if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesFlushGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesFlushGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_flush - return this.Raw.IndicesFlushGetForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesFlushGetForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesFlush() into any of the following paths: \r\n - /_flush\r\n - /{index}/_flush"); } - internal ElasticsearchResponse IndicesGetAliasDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetAliasDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAlias(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAlias(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_alias if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetAlias(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetAlias(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_alias - return this.Raw.IndicesGetAliasForAll(u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetAlias() into any of the following paths: \r\n - /_alias\r\n - /_alias/{name}\r\n - /{index}/_alias/{name}\r\n - /{index}/_alias"); } - internal Task IndicesGetAliasDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetAliasDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_alias if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_alias - return this.Raw.IndicesGetAliasForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetAlias() into any of the following paths: \r\n - /_alias\r\n - /_alias/{name}\r\n - /{index}/_alias/{name}\r\n - /{index}/_alias"); } - internal ElasticsearchResponse IndicesGetAliasesDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetAliasesDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_aliases/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliases(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliases(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_aliases if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetAliases(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliases(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_aliases/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasesForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasesForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_aliases - return this.Raw.IndicesGetAliasesForAll(u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasesForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetAliases() into any of the following paths: \r\n - /_aliases\r\n - /{index}/_aliases\r\n - /{index}/_aliases/{name}\r\n - /_aliases/{name}"); } - internal Task IndicesGetAliasesDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetAliasesDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_aliases/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasesAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasesAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_aliases if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasesAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasesAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_aliases/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetAliasesForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasesForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_aliases - return this.Raw.IndicesGetAliasesForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesGetAliasesForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetAliases() into any of the following paths: \r\n - /_aliases\r\n - /{index}/_aliases\r\n - /{index}/_aliases/{name}\r\n - /_aliases/{name}"); } - internal ElasticsearchResponse IndicesGetFieldMappingDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetFieldMappingDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_mapping/{type}/field/{field} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMapping(pathInfo.Index,pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMapping(pathInfo.Index,pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mapping/field/{field} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMapping(pathInfo.Index,pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMapping(pathInfo.Index,pathInfo.Field,u => pathInfo.QueryString, deserializationState); //GET /_mapping/{type}/field/{field} if (!pathInfo.Type.IsNullOrEmpty() && !pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMappingForAll(pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMappingForAll(pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString, deserializationState); //GET /_mapping/field/{field} if (!pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMappingForAll(pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMappingForAll(pathInfo.Field,u => pathInfo.QueryString, deserializationState); break; } @@ -1652,23 +1652,23 @@ internal ElasticsearchResponse IndicesGetFieldMappingDispatch(ElasticsearchPathI } - internal Task IndicesGetFieldMappingDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetFieldMappingDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_mapping/{type}/field/{field} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMappingAsync(pathInfo.Index,pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMappingAsync(pathInfo.Index,pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mapping/field/{field} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMappingAsync(pathInfo.Index,pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMappingAsync(pathInfo.Index,pathInfo.Field,u => pathInfo.QueryString, deserializationState); //GET /_mapping/{type}/field/{field} if (!pathInfo.Type.IsNullOrEmpty() && !pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMappingForAllAsync(pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMappingForAllAsync(pathInfo.Type,pathInfo.Field,u => pathInfo.QueryString, deserializationState); //GET /_mapping/field/{field} if (!pathInfo.Field.IsNullOrEmpty()) - return this.Raw.IndicesGetFieldMappingForAllAsync(pathInfo.Field,u => pathInfo.QueryString); + return this.Raw.IndicesGetFieldMappingForAllAsync(pathInfo.Field,u => pathInfo.QueryString, deserializationState); break; } @@ -1676,184 +1676,184 @@ internal Task IndicesGetFieldMappingDispatchAsync(Elastic } - internal ElasticsearchResponse IndicesGetMappingDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetMappingDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_mapping/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesGetMapping(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesGetMapping(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mapping if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetMapping(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetMapping(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mapping/{type} if (!pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesGetMappingForAll(pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesGetMappingForAll(pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /_mapping - return this.Raw.IndicesGetMappingForAll(u => pathInfo.QueryString); + return this.Raw.IndicesGetMappingForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetMapping() into any of the following paths: \r\n - /_mapping\r\n - /{index}/_mapping\r\n - /_mapping/{type}\r\n - /{index}/_mapping/{type}"); } - internal Task IndicesGetMappingDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetMappingDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_mapping/{type} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesGetMappingAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesGetMappingAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mapping if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetMappingAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetMappingAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mapping/{type} if (!pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesGetMappingForAllAsync(pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesGetMappingForAllAsync(pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /_mapping - return this.Raw.IndicesGetMappingForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesGetMappingForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetMapping() into any of the following paths: \r\n - /_mapping\r\n - /{index}/_mapping\r\n - /_mapping/{type}\r\n - /{index}/_mapping/{type}"); } - internal ElasticsearchResponse IndicesGetSettingsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetSettingsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_settings/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetSettings(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetSettings(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_settings if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetSettings(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetSettings(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_settings/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetSettingsForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetSettingsForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_settings - return this.Raw.IndicesGetSettingsForAll(u => pathInfo.QueryString); + return this.Raw.IndicesGetSettingsForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetSettings() into any of the following paths: \r\n - /_settings\r\n - /{index}/_settings\r\n - /{index}/_settings/{name}\r\n - /_settings/{name}"); } - internal Task IndicesGetSettingsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetSettingsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_settings/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetSettingsAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetSettingsAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_settings if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetSettingsAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetSettingsAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_settings/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetSettingsForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetSettingsForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_settings - return this.Raw.IndicesGetSettingsForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesGetSettingsForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetSettings() into any of the following paths: \r\n - /_settings\r\n - /{index}/_settings\r\n - /{index}/_settings/{name}\r\n - /_settings/{name}"); } - internal ElasticsearchResponse IndicesGetTemplateDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetTemplateDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_template/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetTemplateForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetTemplateForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_template - return this.Raw.IndicesGetTemplateForAll(u => pathInfo.QueryString); + return this.Raw.IndicesGetTemplateForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetTemplate() into any of the following paths: \r\n - /_template\r\n - /_template/{name}"); } - internal Task IndicesGetTemplateDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetTemplateDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_template/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetTemplateForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetTemplateForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_template - return this.Raw.IndicesGetTemplateForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesGetTemplateForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetTemplate() into any of the following paths: \r\n - /_template\r\n - /_template/{name}"); } - internal ElasticsearchResponse IndicesGetWarmerDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesGetWarmerDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmer(pathInfo.Index,pathInfo.Type,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmer(pathInfo.Index,pathInfo.Type,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmer(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmer(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_warmer if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmer(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmer(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_warmer/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmerForAll(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerForAll(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_warmer - return this.Raw.IndicesGetWarmerForAll(u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetWarmer() into any of the following paths: \r\n - /_warmer\r\n - /{index}/_warmer\r\n - /{index}/_warmer/{name}\r\n - /_warmer/{name}\r\n - /{index}/{type}/_warmer/{name}"); } - internal Task IndicesGetWarmerDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesGetWarmerDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmerAsync(pathInfo.Index,pathInfo.Type,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerAsync(pathInfo.Index,pathInfo.Type,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmerAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerAsync(pathInfo.Index,pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /{index}/_warmer if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmerAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_warmer/{name} if (!pathInfo.Name.IsNullOrEmpty()) - return this.Raw.IndicesGetWarmerForAllAsync(pathInfo.Name,u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerForAllAsync(pathInfo.Name,u => pathInfo.QueryString, deserializationState); //GET /_warmer - return this.Raw.IndicesGetWarmerForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesGetWarmerForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesGetWarmer() into any of the following paths: \r\n - /_warmer\r\n - /{index}/_warmer\r\n - /{index}/_warmer/{name}\r\n - /_warmer/{name}\r\n - /{index}/{type}/_warmer/{name}"); } - internal ElasticsearchResponse IndicesOpenDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesOpenDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_open if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesOpen(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesOpen(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1861,14 +1861,14 @@ internal ElasticsearchResponse IndicesOpenDispatch(ElasticsearchPathInfo IndicesOpenDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesOpenDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_open if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesOpenAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesOpenAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); break; } @@ -1876,72 +1876,72 @@ internal Task IndicesOpenDispatchAsync(ElasticsearchPathI } - internal ElasticsearchResponse IndicesOptimizeDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesOptimizeDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_optimize if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesOptimize(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesOptimize(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_optimize - return this.Raw.IndicesOptimizeForAll(u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeForAll(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_optimize if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesOptimizeGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_optimize - return this.Raw.IndicesOptimizeGetForAll(u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeGetForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesOptimize() into any of the following paths: \r\n - /_optimize\r\n - /{index}/_optimize"); } - internal Task IndicesOptimizeDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesOptimizeDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_optimize if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesOptimizeAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_optimize - return this.Raw.IndicesOptimizeForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeForAllAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_optimize if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesOptimizeGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_optimize - return this.Raw.IndicesOptimizeGetForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesOptimizeGetForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesOptimize() into any of the following paths: \r\n - /_optimize\r\n - /{index}/_optimize"); } - internal ElasticsearchResponse IndicesPutAliasDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesPutAliasDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAlias(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAlias(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //PUT /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasForAll(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasForAll(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasPost(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasPost(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //POST /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasPostForAll(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasPostForAll(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; } @@ -1949,26 +1949,26 @@ internal ElasticsearchResponse IndicesPutAliasDispatch(ElasticsearchPathInfo IndicesPutAliasDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesPutAliasDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //PUT /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/_alias/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasPostAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasPostAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //POST /_alias/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutAliasPostForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutAliasPostForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; } @@ -1976,26 +1976,26 @@ internal Task IndicesPutAliasDispatchAsync(ElasticsearchP } - internal ElasticsearchResponse IndicesPutMappingDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesPutMappingDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/_mapping if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMapping(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMapping(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //PUT /_mapping/{type} if (!pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingForAll(pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingForAll(pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mapping if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingPost(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingPost(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /_mapping/{type} if (!pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingPostForAll(pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingPostForAll(pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2003,26 +2003,26 @@ internal ElasticsearchResponse IndicesPutMappingDispatch(ElasticsearchPathInfo

IndicesPutMappingDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesPutMappingDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/_mapping if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //PUT /_mapping/{type} if (!pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingForAllAsync(pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingForAllAsync(pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mapping if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingPostAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingPostAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /_mapping/{type} if (!pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutMappingPostForAllAsync(pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutMappingPostForAllAsync(pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2030,17 +2030,17 @@ internal Task IndicesPutMappingDispatchAsync(Elasticsearc } - internal ElasticsearchResponse IndicesPutSettingsDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesPutSettingsDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/_settings if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutSettings(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutSettings(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //PUT /_settings if (body != null) - return this.Raw.IndicesPutSettingsForAll(body,u => pathInfo.QueryString); + return this.Raw.IndicesPutSettingsForAll(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2048,17 +2048,17 @@ internal ElasticsearchResponse IndicesPutSettingsDispatch(ElasticsearchPathInfo< } - internal Task IndicesPutSettingsDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesPutSettingsDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/_settings if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutSettingsAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutSettingsAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //PUT /_settings if (body != null) - return this.Raw.IndicesPutSettingsForAllAsync(body,u => pathInfo.QueryString); + return this.Raw.IndicesPutSettingsForAllAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2066,20 +2066,20 @@ internal Task IndicesPutSettingsDispatchAsync(Elasticsear } - internal ElasticsearchResponse IndicesPutTemplateDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesPutTemplateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_template/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutTemplateForAll(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutTemplateForAll(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /_template/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutTemplatePostForAll(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutTemplatePostForAll(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2087,20 +2087,20 @@ internal ElasticsearchResponse IndicesPutTemplateDispatch(ElasticsearchPathInfo< } - internal Task IndicesPutTemplateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesPutTemplateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_template/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutTemplateForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutTemplateForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /_template/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutTemplatePostForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutTemplatePostForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2108,32 +2108,32 @@ internal Task IndicesPutTemplateDispatchAsync(Elasticsear } - internal ElasticsearchResponse IndicesPutWarmerDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesPutWarmerDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmer(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmer(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //PUT /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmer(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmer(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //PUT /_warmer/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerForAll(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerForAll(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerPost(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerPost(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerPost(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerPost(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //POST /_warmer/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerPostForAll(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerPostForAll(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2141,32 +2141,32 @@ internal ElasticsearchResponse IndicesPutWarmerDispatch(ElasticsearchPathInfo IndicesPutWarmerDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesPutWarmerDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /{index}/{type}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerAsync(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerAsync(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //PUT /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //PUT /_warmer/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerPostAsync(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerPostAsync(pathInfo.Index,pathInfo.Type,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_warmer/{name} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerPostAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerPostAsync(pathInfo.Index,pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); //POST /_warmer/{name} if (!pathInfo.Name.IsNullOrEmpty() && body != null) - return this.Raw.IndicesPutWarmerPostForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString); + return this.Raw.IndicesPutWarmerPostForAllAsync(pathInfo.Name,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2174,200 +2174,200 @@ internal Task IndicesPutWarmerDispatchAsync(Elasticsearch } - internal ElasticsearchResponse IndicesRefreshDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesRefreshDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_refresh if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesRefresh(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesRefresh(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_refresh - return this.Raw.IndicesRefreshForAll(u => pathInfo.QueryString); + return this.Raw.IndicesRefreshForAll(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_refresh if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesRefreshGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesRefreshGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_refresh - return this.Raw.IndicesRefreshGetForAll(u => pathInfo.QueryString); + return this.Raw.IndicesRefreshGetForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesRefresh() into any of the following paths: \r\n - /_refresh\r\n - /{index}/_refresh"); } - internal Task IndicesRefreshDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesRefreshDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_refresh if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesRefreshAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesRefreshAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_refresh - return this.Raw.IndicesRefreshForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesRefreshForAllAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.GET: //GET /{index}/_refresh if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesRefreshGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesRefreshGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_refresh - return this.Raw.IndicesRefreshGetForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesRefreshGetForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesRefresh() into any of the following paths: \r\n - /_refresh\r\n - /{index}/_refresh"); } - internal ElasticsearchResponse IndicesSegmentsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesSegmentsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_segments if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesSegments(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesSegments(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_segments - return this.Raw.IndicesSegmentsForAll(u => pathInfo.QueryString); + return this.Raw.IndicesSegmentsForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesSegments() into any of the following paths: \r\n - /_segments\r\n - /{index}/_segments"); } - internal Task IndicesSegmentsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesSegmentsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_segments if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesSegmentsAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesSegmentsAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_segments - return this.Raw.IndicesSegmentsForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesSegmentsForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesSegments() into any of the following paths: \r\n - /_segments\r\n - /{index}/_segments"); } - internal ElasticsearchResponse IndicesSnapshotIndexDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesSnapshotIndexDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_gateway/snapshot if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesSnapshotIndex(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesSnapshotIndex(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_gateway/snapshot - return this.Raw.IndicesSnapshotIndexForAll(u => pathInfo.QueryString); + return this.Raw.IndicesSnapshotIndexForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesSnapshotIndex() into any of the following paths: \r\n - /_gateway/snapshot\r\n - /{index}/_gateway/snapshot"); } - internal Task IndicesSnapshotIndexDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesSnapshotIndexDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_gateway/snapshot if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesSnapshotIndexAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesSnapshotIndexAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //POST /_gateway/snapshot - return this.Raw.IndicesSnapshotIndexForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesSnapshotIndexForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesSnapshotIndex() into any of the following paths: \r\n - /_gateway/snapshot\r\n - /{index}/_gateway/snapshot"); } - internal ElasticsearchResponse IndicesStatsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesStatsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_stats/{metric} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.IndicesStats(pathInfo.Index,pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.IndicesStats(pathInfo.Index,pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_stats/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.IndicesStatsForAll(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.IndicesStatsForAll(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /{index}/_stats if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesStats(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesStats(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_stats - return this.Raw.IndicesStatsForAll(u => pathInfo.QueryString); + return this.Raw.IndicesStatsForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesStats() into any of the following paths: \r\n - /_stats\r\n - /_stats/{metric}\r\n - /{index}/_stats\r\n - /{index}/_stats/{metric}"); } - internal Task IndicesStatsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesStatsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_stats/{metric} if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.IndicesStatsAsync(pathInfo.Index,pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.IndicesStatsAsync(pathInfo.Index,pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_stats/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.IndicesStatsForAllAsync(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.IndicesStatsForAllAsync(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /{index}/_stats if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesStatsAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesStatsAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_stats - return this.Raw.IndicesStatsForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesStatsForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesStats() into any of the following paths: \r\n - /_stats\r\n - /_stats/{metric}\r\n - /{index}/_stats\r\n - /{index}/_stats/{metric}"); } - internal ElasticsearchResponse IndicesStatusDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse IndicesStatusDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_status if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesStatus(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesStatus(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_status - return this.Raw.IndicesStatusForAll(u => pathInfo.QueryString); + return this.Raw.IndicesStatusForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesStatus() into any of the following paths: \r\n - /_status\r\n - /{index}/_status"); } - internal Task IndicesStatusDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> IndicesStatusDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/_status if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesStatusAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesStatusAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_status - return this.Raw.IndicesStatusForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesStatusForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.IndicesStatus() into any of the following paths: \r\n - /_status\r\n - /{index}/_status"); } - internal ElasticsearchResponse IndicesUpdateAliasesDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesUpdateAliasesDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_aliases if (body != null) - return this.Raw.IndicesUpdateAliasesForAll(body,u => pathInfo.QueryString); + return this.Raw.IndicesUpdateAliasesForAll(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2375,14 +2375,14 @@ internal ElasticsearchResponse IndicesUpdateAliasesDispatch(ElasticsearchPathInf } - internal Task IndicesUpdateAliasesDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesUpdateAliasesDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_aliases if (body != null) - return this.Raw.IndicesUpdateAliasesForAllAsync(body,u => pathInfo.QueryString); + return this.Raw.IndicesUpdateAliasesForAllAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2390,30 +2390,30 @@ internal Task IndicesUpdateAliasesDispatchAsync(Elasticse } - internal ElasticsearchResponse IndicesValidateQueryDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse IndicesValidateQueryDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_validate/query if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesValidateQueryGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_validate/query if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesValidateQueryGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_validate/query - return this.Raw.IndicesValidateQueryGetForAll(u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryGetForAll(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_validate/query if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesValidateQuery(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQuery(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_validate/query if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesValidateQuery(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQuery(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_validate/query if (body != null) - return this.Raw.IndicesValidateQueryForAll(body,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryForAll(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2421,30 +2421,30 @@ internal ElasticsearchResponse IndicesValidateQueryDispatch(ElasticsearchPathInf } - internal Task IndicesValidateQueryDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> IndicesValidateQueryDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_validate/query if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.IndicesValidateQueryGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_validate/query if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.IndicesValidateQueryGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_validate/query - return this.Raw.IndicesValidateQueryGetForAllAsync(u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryGetForAllAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_validate/query if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.IndicesValidateQueryAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_validate/query if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.IndicesValidateQueryAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_validate/query if (body != null) - return this.Raw.IndicesValidateQueryForAllAsync(body,u => pathInfo.QueryString); + return this.Raw.IndicesValidateQueryForAllAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2452,56 +2452,56 @@ internal Task IndicesValidateQueryDispatchAsync(Elasticse } - internal ElasticsearchResponse InfoDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse InfoDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET / - return this.Raw.Info(u => pathInfo.QueryString); + return this.Raw.Info(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Info() into any of the following paths: \r\n - /"); } - internal Task InfoDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> InfoDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET / - return this.Raw.InfoAsync(u => pathInfo.QueryString); + return this.Raw.InfoAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Info() into any of the following paths: \r\n - /"); } - internal ElasticsearchResponse MgetDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse MgetDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_mget if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MgetGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MgetGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mget if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MgetGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MgetGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mget - return this.Raw.MgetGet(u => pathInfo.QueryString); + return this.Raw.MgetGet(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mget if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Mget(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Mget(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_mget if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Mget(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Mget(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_mget if (body != null) - return this.Raw.Mget(body,u => pathInfo.QueryString); + return this.Raw.Mget(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2509,30 +2509,30 @@ internal ElasticsearchResponse MgetDispatch(ElasticsearchPathInfo MgetDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> MgetDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_mget if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MgetGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MgetGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mget if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MgetGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MgetGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mget - return this.Raw.MgetGetAsync(u => pathInfo.QueryString); + return this.Raw.MgetGetAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mget if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.MgetAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.MgetAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_mget if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.MgetAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.MgetAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_mget if (body != null) - return this.Raw.MgetAsync(body,u => pathInfo.QueryString); + return this.Raw.MgetAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2540,20 +2540,20 @@ internal Task MgetDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse MltDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_mlt if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.MltGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.MltGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_mlt if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.Mlt(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.Mlt(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2561,20 +2561,20 @@ internal ElasticsearchResponse MltDispatch(ElasticsearchPathInfo MltDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> MltDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_mlt if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.MltGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.MltGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_mlt if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.MltAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.MltAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2582,30 +2582,30 @@ internal Task MltDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse MpercolateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MpercolateGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MpercolateGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MpercolateGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MpercolateGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mpercolate - return this.Raw.MpercolateGet(u => pathInfo.QueryString); + return this.Raw.MpercolateGet(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Mpercolate(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Mpercolate(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Mpercolate(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Mpercolate(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_mpercolate if (body != null) - return this.Raw.Mpercolate(body,u => pathInfo.QueryString); + return this.Raw.Mpercolate(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2613,30 +2613,30 @@ internal ElasticsearchResponse MpercolateDispatch(ElasticsearchPathInfo MpercolateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> MpercolateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MpercolateGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MpercolateGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MpercolateGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MpercolateGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mpercolate - return this.Raw.MpercolateGetAsync(u => pathInfo.QueryString); + return this.Raw.MpercolateGetAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.MpercolateAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.MpercolateAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_mpercolate if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.MpercolateAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.MpercolateAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_mpercolate if (body != null) - return this.Raw.MpercolateAsync(body,u => pathInfo.QueryString); + return this.Raw.MpercolateAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2644,30 +2644,30 @@ internal Task MpercolateDispatchAsync(ElasticsearchPathIn } - internal ElasticsearchResponse MsearchDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse MsearchDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_msearch if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MsearchGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MsearchGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_msearch if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MsearchGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MsearchGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_msearch - return this.Raw.MsearchGet(u => pathInfo.QueryString); + return this.Raw.MsearchGet(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_msearch if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Msearch(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Msearch(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_msearch if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Msearch(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Msearch(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_msearch if (body != null) - return this.Raw.Msearch(body,u => pathInfo.QueryString); + return this.Raw.Msearch(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2675,30 +2675,30 @@ internal ElasticsearchResponse MsearchDispatch(ElasticsearchPathInfo MsearchDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> MsearchDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_msearch if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MsearchGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MsearchGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_msearch if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MsearchGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MsearchGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_msearch - return this.Raw.MsearchGetAsync(u => pathInfo.QueryString); + return this.Raw.MsearchGetAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_msearch if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.MsearchAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.MsearchAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_msearch if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.MsearchAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.MsearchAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_msearch if (body != null) - return this.Raw.MsearchAsync(body,u => pathInfo.QueryString); + return this.Raw.MsearchAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2706,30 +2706,30 @@ internal Task MsearchDispatchAsync(ElasticsearchPathInfo< } - internal ElasticsearchResponse MtermvectorsDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse MtermvectorsDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MtermvectorsGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MtermvectorsGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MtermvectorsGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MtermvectorsGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mtermvectors - return this.Raw.MtermvectorsGet(u => pathInfo.QueryString); + return this.Raw.MtermvectorsGet(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Mtermvectors(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Mtermvectors(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Mtermvectors(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Mtermvectors(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_mtermvectors if (body != null) - return this.Raw.Mtermvectors(body,u => pathInfo.QueryString); + return this.Raw.Mtermvectors(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2737,30 +2737,30 @@ internal ElasticsearchResponse MtermvectorsDispatch(ElasticsearchPathInfo MtermvectorsDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> MtermvectorsDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.MtermvectorsGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.MtermvectorsGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.MtermvectorsGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.MtermvectorsGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_mtermvectors - return this.Raw.MtermvectorsGetAsync(u => pathInfo.QueryString); + return this.Raw.MtermvectorsGetAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.MtermvectorsAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.MtermvectorsAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_mtermvectors if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.MtermvectorsAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.MtermvectorsAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_mtermvectors if (body != null) - return this.Raw.MtermvectorsAsync(body,u => pathInfo.QueryString); + return this.Raw.MtermvectorsAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -2768,190 +2768,190 @@ internal Task MtermvectorsDispatchAsync(ElasticsearchPath } - internal ElasticsearchResponse NodesHotThreadsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse NodesHotThreadsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/nodes/{node_id}/hotthreads if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesHotThreads(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesHotThreads(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_cluster/nodes/hotthreads - return this.Raw.NodesHotThreadsForAll(u => pathInfo.QueryString); + return this.Raw.NodesHotThreadsForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesHotThreads() into any of the following paths: \r\n - /_cluster/nodes/hotthreads\r\n - /_cluster/nodes/hot_threads\r\n - /_cluster/nodes/{node_id}/hotthreads\r\n - /_cluster/nodes/{node_id}/hot_threads\r\n - /_nodes/hotthreads\r\n - /_nodes/hot_threads\r\n - /_nodes/{node_id}/hotthreads\r\n - /_nodes/{node_id}/hot_threads"); } - internal Task NodesHotThreadsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> NodesHotThreadsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_cluster/nodes/{node_id}/hotthreads if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesHotThreadsAsync(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesHotThreadsAsync(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_cluster/nodes/hotthreads - return this.Raw.NodesHotThreadsForAllAsync(u => pathInfo.QueryString); + return this.Raw.NodesHotThreadsForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesHotThreads() into any of the following paths: \r\n - /_cluster/nodes/hotthreads\r\n - /_cluster/nodes/hot_threads\r\n - /_cluster/nodes/{node_id}/hotthreads\r\n - /_cluster/nodes/{node_id}/hot_threads\r\n - /_nodes/hotthreads\r\n - /_nodes/hot_threads\r\n - /_nodes/{node_id}/hotthreads\r\n - /_nodes/{node_id}/hot_threads"); } - internal ElasticsearchResponse NodesInfoDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse NodesInfoDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_nodes/{node_id}/{metric} if (!pathInfo.NodeId.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesInfo(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesInfo(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{node_id} if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesInfo(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesInfo(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesInfoForAll(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesInfoForAll(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes - return this.Raw.NodesInfoForAll(u => pathInfo.QueryString); + return this.Raw.NodesInfoForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesInfo() into any of the following paths: \r\n - /_nodes\r\n - /_nodes/{node_id}\r\n - /_nodes/{metric}\r\n - /_nodes/{node_id}/{metric}"); } - internal Task NodesInfoDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> NodesInfoDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_nodes/{node_id}/{metric} if (!pathInfo.NodeId.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesInfoAsync(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesInfoAsync(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{node_id} if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesInfoAsync(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesInfoAsync(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesInfoForAllAsync(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesInfoForAllAsync(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes - return this.Raw.NodesInfoForAllAsync(u => pathInfo.QueryString); + return this.Raw.NodesInfoForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesInfo() into any of the following paths: \r\n - /_nodes\r\n - /_nodes/{node_id}\r\n - /_nodes/{metric}\r\n - /_nodes/{node_id}/{metric}"); } - internal ElasticsearchResponse NodesShutdownDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse NodesShutdownDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_cluster/nodes/{node_id}/_shutdown if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesShutdown(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesShutdown(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //POST /_shutdown - return this.Raw.NodesShutdownForAll(u => pathInfo.QueryString); + return this.Raw.NodesShutdownForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesShutdown() into any of the following paths: \r\n - /_shutdown\r\n - /_cluster/nodes/_shutdown\r\n - /_cluster/nodes/{node_id}/_shutdown"); } - internal Task NodesShutdownDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> NodesShutdownDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_cluster/nodes/{node_id}/_shutdown if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesShutdownAsync(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesShutdownAsync(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //POST /_shutdown - return this.Raw.NodesShutdownForAllAsync(u => pathInfo.QueryString); + return this.Raw.NodesShutdownForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesShutdown() into any of the following paths: \r\n - /_shutdown\r\n - /_cluster/nodes/_shutdown\r\n - /_cluster/nodes/{node_id}/_shutdown"); } - internal ElasticsearchResponse NodesStatsDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse NodesStatsDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_nodes/{node_id}/stats/{metric}/{index_metric} if (!pathInfo.NodeId.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty() && !pathInfo.IndexMetric.IsNullOrEmpty()) - return this.Raw.NodesStats(pathInfo.NodeId,pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString); + return this.Raw.NodesStats(pathInfo.NodeId,pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{node_id}/stats/{metric} if (!pathInfo.NodeId.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesStats(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesStats(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/stats/{metric}/{index_metric} if (!pathInfo.Metric.IsNullOrEmpty() && !pathInfo.IndexMetric.IsNullOrEmpty()) - return this.Raw.NodesStatsForAll(pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString); + return this.Raw.NodesStatsForAll(pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{node_id}/stats if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesStats(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesStats(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_nodes/stats/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesStatsForAll(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesStatsForAll(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/stats - return this.Raw.NodesStatsForAll(u => pathInfo.QueryString); + return this.Raw.NodesStatsForAll(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesStats() into any of the following paths: \r\n - /_nodes/stats\r\n - /_nodes/{node_id}/stats\r\n - /_nodes/stats/{metric}\r\n - /_nodes/{node_id}/stats/{metric}\r\n - /_nodes/stats/{metric}/{index_metric}\r\n - /_nodes/{node_id}/stats/{metric}/{index_metric}"); } - internal Task NodesStatsDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> NodesStatsDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_nodes/{node_id}/stats/{metric}/{index_metric} if (!pathInfo.NodeId.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty() && !pathInfo.IndexMetric.IsNullOrEmpty()) - return this.Raw.NodesStatsAsync(pathInfo.NodeId,pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString); + return this.Raw.NodesStatsAsync(pathInfo.NodeId,pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{node_id}/stats/{metric} if (!pathInfo.NodeId.IsNullOrEmpty() && !pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesStatsAsync(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesStatsAsync(pathInfo.NodeId,pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/stats/{metric}/{index_metric} if (!pathInfo.Metric.IsNullOrEmpty() && !pathInfo.IndexMetric.IsNullOrEmpty()) - return this.Raw.NodesStatsForAllAsync(pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString); + return this.Raw.NodesStatsForAllAsync(pathInfo.Metric,pathInfo.IndexMetric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/{node_id}/stats if (!pathInfo.NodeId.IsNullOrEmpty()) - return this.Raw.NodesStatsAsync(pathInfo.NodeId,u => pathInfo.QueryString); + return this.Raw.NodesStatsAsync(pathInfo.NodeId,u => pathInfo.QueryString, deserializationState); //GET /_nodes/stats/{metric} if (!pathInfo.Metric.IsNullOrEmpty()) - return this.Raw.NodesStatsForAllAsync(pathInfo.Metric,u => pathInfo.QueryString); + return this.Raw.NodesStatsForAllAsync(pathInfo.Metric,u => pathInfo.QueryString, deserializationState); //GET /_nodes/stats - return this.Raw.NodesStatsForAllAsync(u => pathInfo.QueryString); + return this.Raw.NodesStatsForAllAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.NodesStats() into any of the following paths: \r\n - /_nodes/stats\r\n - /_nodes/{node_id}/stats\r\n - /_nodes/stats/{metric}\r\n - /_nodes/{node_id}/stats/{metric}\r\n - /_nodes/stats/{metric}/{index_metric}\r\n - /_nodes/{node_id}/stats/{metric}/{index_metric}"); } - internal ElasticsearchResponse PercolateDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse PercolateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.PercolateGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.PercolateGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); //GET /{index}/{type}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.PercolateGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.PercolateGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.Percolate(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.Percolate(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/{type}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Percolate(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Percolate(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2959,26 +2959,26 @@ internal ElasticsearchResponse PercolateDispatch(ElasticsearchPathInfo PercolateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> PercolateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.PercolateGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.PercolateGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); //GET /{index}/{type}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.PercolateGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.PercolateGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.PercolateAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.PercolateAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/{type}/_percolate if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.PercolateAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.PercolateAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); break; } @@ -2986,50 +2986,50 @@ internal Task PercolateDispatchAsync(ElasticsearchPathInf } - internal ElasticsearchResponse PingDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse PingDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD / - return this.Raw.Ping(u => pathInfo.QueryString); + return this.Raw.Ping(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Ping() into any of the following paths: \r\n - /"); } - internal Task PingDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> PingDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.HEAD: //HEAD / - return this.Raw.PingAsync(u => pathInfo.QueryString); + return this.Raw.PingAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Ping() into any of the following paths: \r\n - /"); } - internal ElasticsearchResponse ScrollDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse ScrollDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_search/scroll/{scroll_id} if (!pathInfo.ScrollId.IsNullOrEmpty()) - return this.Raw.ScrollGet(pathInfo.ScrollId,u => pathInfo.QueryString); + return this.Raw.ScrollGet(pathInfo.ScrollId,u => pathInfo.QueryString, deserializationState); //GET /_search/scroll - return this.Raw.ScrollGet(u => pathInfo.QueryString); + return this.Raw.ScrollGet(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /_search/scroll/{scroll_id} if (!pathInfo.ScrollId.IsNullOrEmpty() && body != null) - return this.Raw.Scroll(pathInfo.ScrollId,body,u => pathInfo.QueryString); + return this.Raw.Scroll(pathInfo.ScrollId,body,u => pathInfo.QueryString, deserializationState); //POST /_search/scroll if (body != null) - return this.Raw.Scroll(body,u => pathInfo.QueryString); + return this.Raw.Scroll(body,u => pathInfo.QueryString, deserializationState); break; } @@ -3037,24 +3037,24 @@ internal ElasticsearchResponse ScrollDispatch(ElasticsearchPathInfo ScrollDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> ScrollDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_search/scroll/{scroll_id} if (!pathInfo.ScrollId.IsNullOrEmpty()) - return this.Raw.ScrollGetAsync(pathInfo.ScrollId,u => pathInfo.QueryString); + return this.Raw.ScrollGetAsync(pathInfo.ScrollId,u => pathInfo.QueryString, deserializationState); //GET /_search/scroll - return this.Raw.ScrollGetAsync(u => pathInfo.QueryString); + return this.Raw.ScrollGetAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /_search/scroll/{scroll_id} if (!pathInfo.ScrollId.IsNullOrEmpty() && body != null) - return this.Raw.ScrollAsync(pathInfo.ScrollId,body,u => pathInfo.QueryString); + return this.Raw.ScrollAsync(pathInfo.ScrollId,body,u => pathInfo.QueryString, deserializationState); //POST /_search/scroll if (body != null) - return this.Raw.ScrollAsync(body,u => pathInfo.QueryString); + return this.Raw.ScrollAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -3062,30 +3062,30 @@ internal Task ScrollDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse SearchDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_search if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.SearchGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.SearchGet(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_search if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.SearchGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.SearchGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_search - return this.Raw.SearchGet(u => pathInfo.QueryString); + return this.Raw.SearchGet(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_search if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.Search(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.Search(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_search if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Search(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Search(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_search if (body != null) - return this.Raw.Search(body,u => pathInfo.QueryString); + return this.Raw.Search(body,u => pathInfo.QueryString, deserializationState); break; } @@ -3093,30 +3093,30 @@ internal ElasticsearchResponse SearchDispatch(ElasticsearchPathInfo SearchDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> SearchDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/_search if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty()) - return this.Raw.SearchGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString); + return this.Raw.SearchGetAsync(pathInfo.Index,pathInfo.Type,u => pathInfo.QueryString, deserializationState); //GET /{index}/_search if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.SearchGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.SearchGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_search - return this.Raw.SearchGetAsync(u => pathInfo.QueryString); + return this.Raw.SearchGetAsync(u => pathInfo.QueryString, deserializationState); case PathInfoHttpMethod.POST: //POST /{index}/{type}/_search if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && body != null) - return this.Raw.SearchAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString); + return this.Raw.SearchAsync(pathInfo.Index,pathInfo.Type,body,u => pathInfo.QueryString, deserializationState); //POST /{index}/_search if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.SearchAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.SearchAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_search if (body != null) - return this.Raw.SearchAsync(body,u => pathInfo.QueryString); + return this.Raw.SearchAsync(body,u => pathInfo.QueryString, deserializationState); break; } @@ -3124,20 +3124,20 @@ internal Task SearchDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse SnapshotCreateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreate(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreate(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreatePost(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreatePost(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3145,20 +3145,20 @@ internal ElasticsearchResponse SnapshotCreateDispatch(ElasticsearchPathInfo SnapshotCreateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> SnapshotCreateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreateAsync(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreateAsync(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreatePostAsync(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreatePostAsync(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3166,20 +3166,20 @@ internal Task SnapshotCreateDispatchAsync(ElasticsearchPa } - internal ElasticsearchResponse SnapshotCreateRepositoryDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse SnapshotCreateRepositoryDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreateRepository(pathInfo.Repository,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreateRepository(pathInfo.Repository,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreateRepositoryPost(pathInfo.Repository,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreateRepositoryPost(pathInfo.Repository,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3187,20 +3187,20 @@ internal ElasticsearchResponse SnapshotCreateRepositoryDispatch(ElasticsearchPat } - internal Task SnapshotCreateRepositoryDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> SnapshotCreateRepositoryDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.PUT: //PUT /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreateRepositoryAsync(pathInfo.Repository,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreateRepositoryAsync(pathInfo.Repository,body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotCreateRepositoryPostAsync(pathInfo.Repository,body,u => pathInfo.QueryString); + return this.Raw.SnapshotCreateRepositoryPostAsync(pathInfo.Repository,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3208,14 +3208,14 @@ internal Task SnapshotCreateRepositoryDispatchAsync(Elast } - internal ElasticsearchResponse SnapshotDeleteDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse SnapshotDeleteDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty()) - return this.Raw.SnapshotDelete(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString); + return this.Raw.SnapshotDelete(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString, deserializationState); break; } @@ -3223,14 +3223,14 @@ internal ElasticsearchResponse SnapshotDeleteDispatch(ElasticsearchPathInfo SnapshotDeleteDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> SnapshotDeleteDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty()) - return this.Raw.SnapshotDeleteAsync(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString); + return this.Raw.SnapshotDeleteAsync(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString, deserializationState); break; } @@ -3238,14 +3238,14 @@ internal Task SnapshotDeleteDispatchAsync(ElasticsearchPa } - internal ElasticsearchResponse SnapshotDeleteRepositoryDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse SnapshotDeleteRepositoryDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty()) - return this.Raw.SnapshotDeleteRepository(pathInfo.Repository,u => pathInfo.QueryString); + return this.Raw.SnapshotDeleteRepository(pathInfo.Repository,u => pathInfo.QueryString, deserializationState); break; } @@ -3253,14 +3253,14 @@ internal ElasticsearchResponse SnapshotDeleteRepositoryDispatch(ElasticsearchPat } - internal Task SnapshotDeleteRepositoryDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> SnapshotDeleteRepositoryDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.DELETE: //DELETE /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty()) - return this.Raw.SnapshotDeleteRepositoryAsync(pathInfo.Repository,u => pathInfo.QueryString); + return this.Raw.SnapshotDeleteRepositoryAsync(pathInfo.Repository,u => pathInfo.QueryString, deserializationState); break; } @@ -3268,14 +3268,14 @@ internal Task SnapshotDeleteRepositoryDispatchAsync(Elast } - internal ElasticsearchResponse SnapshotGetDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse SnapshotGetDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty()) - return this.Raw.SnapshotGet(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString); + return this.Raw.SnapshotGet(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString, deserializationState); break; } @@ -3283,14 +3283,14 @@ internal ElasticsearchResponse SnapshotGetDispatch(ElasticsearchPathInfo SnapshotGetDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> SnapshotGetDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_snapshot/{repository}/{snapshot} if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty()) - return this.Raw.SnapshotGetAsync(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString); + return this.Raw.SnapshotGetAsync(pathInfo.Repository,pathInfo.Snapshot,u => pathInfo.QueryString, deserializationState); break; } @@ -3298,46 +3298,46 @@ internal Task SnapshotGetDispatchAsync(ElasticsearchPathI } - internal ElasticsearchResponse SnapshotGetRepositoryDispatch(ElasticsearchPathInfo pathInfo ) + internal ElasticsearchResponse SnapshotGetRepositoryDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty()) - return this.Raw.SnapshotGetRepository(pathInfo.Repository,u => pathInfo.QueryString); + return this.Raw.SnapshotGetRepository(pathInfo.Repository,u => pathInfo.QueryString, deserializationState); //GET /_snapshot - return this.Raw.SnapshotGetRepository(u => pathInfo.QueryString); + return this.Raw.SnapshotGetRepository(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.SnapshotGetRepository() into any of the following paths: \r\n - /_snapshot\r\n - /_snapshot/{repository}"); } - internal Task SnapshotGetRepositoryDispatchAsync(ElasticsearchPathInfo pathInfo ) + internal Task> SnapshotGetRepositoryDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /_snapshot/{repository} if (!pathInfo.Repository.IsNullOrEmpty()) - return this.Raw.SnapshotGetRepositoryAsync(pathInfo.Repository,u => pathInfo.QueryString); + return this.Raw.SnapshotGetRepositoryAsync(pathInfo.Repository,u => pathInfo.QueryString, deserializationState); //GET /_snapshot - return this.Raw.SnapshotGetRepositoryAsync(u => pathInfo.QueryString); + return this.Raw.SnapshotGetRepositoryAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.SnapshotGetRepository() into any of the following paths: \r\n - /_snapshot\r\n - /_snapshot/{repository}"); } - internal ElasticsearchResponse SnapshotRestoreDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse SnapshotRestoreDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_snapshot/{repository}/{snapshot}/_restore if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotRestore(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString); + return this.Raw.SnapshotRestore(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3345,14 +3345,14 @@ internal ElasticsearchResponse SnapshotRestoreDispatch(ElasticsearchPathInfo SnapshotRestoreDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> SnapshotRestoreDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /_snapshot/{repository}/{snapshot}/_restore if (!pathInfo.Repository.IsNullOrEmpty() && !pathInfo.Snapshot.IsNullOrEmpty() && body != null) - return this.Raw.SnapshotRestoreAsync(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString); + return this.Raw.SnapshotRestoreAsync(pathInfo.Repository,pathInfo.Snapshot,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3360,70 +3360,70 @@ internal Task SnapshotRestoreDispatchAsync(ElasticsearchP } - internal ElasticsearchResponse SuggestDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse SuggestDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_suggest if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.Suggest(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.Suggest(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_suggest if (body != null) - return this.Raw.Suggest(body,u => pathInfo.QueryString); + return this.Raw.Suggest(body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.GET: //GET /{index}/_suggest if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.SuggestGet(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.SuggestGet(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_suggest - return this.Raw.SuggestGet(u => pathInfo.QueryString); + return this.Raw.SuggestGet(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Suggest() into any of the following paths: \r\n - /_suggest\r\n - /{index}/_suggest"); } - internal Task SuggestDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> SuggestDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/_suggest if (!pathInfo.Index.IsNullOrEmpty() && body != null) - return this.Raw.SuggestAsync(pathInfo.Index,body,u => pathInfo.QueryString); + return this.Raw.SuggestAsync(pathInfo.Index,body,u => pathInfo.QueryString, deserializationState); //POST /_suggest if (body != null) - return this.Raw.SuggestAsync(body,u => pathInfo.QueryString); + return this.Raw.SuggestAsync(body,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.GET: //GET /{index}/_suggest if (!pathInfo.Index.IsNullOrEmpty()) - return this.Raw.SuggestGetAsync(pathInfo.Index,u => pathInfo.QueryString); + return this.Raw.SuggestGetAsync(pathInfo.Index,u => pathInfo.QueryString, deserializationState); //GET /_suggest - return this.Raw.SuggestGetAsync(u => pathInfo.QueryString); + return this.Raw.SuggestGetAsync(u => pathInfo.QueryString, deserializationState); } throw new DispatchException("Could not dispatch IElasticClient.Suggest() into any of the following paths: \r\n - /_suggest\r\n - /{index}/_suggest"); } - internal ElasticsearchResponse TermvectorDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse TermvectorDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_termvector if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.TermvectorGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.TermvectorGet(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_termvector if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.Termvector(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.Termvector(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3431,20 +3431,20 @@ internal ElasticsearchResponse TermvectorDispatch(ElasticsearchPathInfo TermvectorDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> TermvectorDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.GET: //GET /{index}/{type}/{id}/_termvector if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty()) - return this.Raw.TermvectorGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString); + return this.Raw.TermvectorGetAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,u => pathInfo.QueryString, deserializationState); break; case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_termvector if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.TermvectorAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.TermvectorAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3452,14 +3452,14 @@ internal Task TermvectorDispatchAsync(ElasticsearchPathIn } - internal ElasticsearchResponse UpdateDispatch(ElasticsearchPathInfo pathInfo , object body) + internal ElasticsearchResponse UpdateDispatch(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_update if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.Update(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.Update(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } @@ -3467,14 +3467,14 @@ internal ElasticsearchResponse UpdateDispatch(ElasticsearchPathInfo UpdateDispatchAsync(ElasticsearchPathInfo pathInfo , object body) + internal Task> UpdateDispatchAsync(ElasticsearchPathInfo pathInfo , object body, object deserializationState = null) { switch(pathInfo.HttpMethod) { case PathInfoHttpMethod.POST: //POST /{index}/{type}/{id}/_update if (!pathInfo.Index.IsNullOrEmpty() && !pathInfo.Type.IsNullOrEmpty() && !pathInfo.Id.IsNullOrEmpty() && body != null) - return this.Raw.UpdateAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString); + return this.Raw.UpdateAsync(pathInfo.Index,pathInfo.Type,pathInfo.Id,body,u => pathInfo.QueryString, deserializationState); break; } diff --git a/src/Nest/Resolvers/Converters/ConcreteTypeConverter.cs b/src/Nest/Resolvers/Converters/ConcreteTypeConverter.cs index bdfb831ae4f..f6ab3ca1aaf 100644 --- a/src/Nest/Resolvers/Converters/ConcreteTypeConverter.cs +++ b/src/Nest/Resolvers/Converters/ConcreteTypeConverter.cs @@ -132,7 +132,7 @@ private static dynamic GetConcreteTypeUsingSelector( hitDynamic.Sorts = d.sort; hitDynamic._Highlight = d.highlight is Dictionary> ? d.highlight : null; hitDynamic.Explanation = d._explanation is Explanation ? d._explanation : null; - object o = hitDynamic.Source ?? ElasticsearchDynamic.Create(fieldSelection) ?? new object {}; + object o = hitDynamic.Source ?? DynamicDictionary.Create(fieldSelection) ?? new object {}; var concreteType = selector(o, hitDynamic); return concreteType; } diff --git a/src/Nest/Resolvers/Converters/IndexSettingsConverter.cs b/src/Nest/Resolvers/Converters/IndexSettingsConverter.cs index 9fe243aa576..f0bcc5062ef 100644 --- a/src/Nest/Resolvers/Converters/IndexSettingsConverter.cs +++ b/src/Nest/Resolvers/Converters/IndexSettingsConverter.cs @@ -134,7 +134,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist var dictionary = new Dictionary(); serializer.Populate(o.CreateReader(), dictionary); result.Settings = dictionary; - result._ = ElasticsearchDynamic.Create(dictionary); + result._ = DynamicDictionary.Create(dictionary); foreach (var rootProperty in o.Children()) { if (rootProperty.Name.Equals("analysis", StringComparison.InvariantCultureIgnoreCase)) diff --git a/src/Nest/Resolvers/Writers/TypeMappingWriter.cs b/src/Nest/Resolvers/Writers/TypeMappingWriter.cs index 14fddeb0136..46fee336948 100644 --- a/src/Nest/Resolvers/Writers/TypeMappingWriter.cs +++ b/src/Nest/Resolvers/Writers/TypeMappingWriter.cs @@ -79,21 +79,24 @@ internal RootObjectMapping RootObjectMappingFromAttributes() var json = JObject.Parse(this.MapFromAttributes()); var nestedJson = json.Properties().First().Value.ToString(); - return this._elasticSerializer.Deserialize(nestedJson.Utf8Bytes()); + using (var ms = new MemoryStream(nestedJson.Utf8Bytes())) + return this._elasticSerializer.DeserializeInternal(ms); } internal ObjectMapping ObjectMappingFromAttributes() { var json = JObject.Parse(this.MapFromAttributes()); var nestedJson = json.Properties().First().Value.ToString(); - return this._elasticSerializer.Deserialize(nestedJson.Utf8Bytes()); + using (var ms = new MemoryStream(nestedJson.Utf8Bytes())) + return this._elasticSerializer.DeserializeInternal(ms); } internal NestedObjectMapping NestedObjectMappingFromAttributes() { var json = JObject.Parse(this.MapFromAttributes()); var nestedJson = json.Properties().First().Value.ToString(); - return this._elasticSerializer.Deserialize(nestedJson.Utf8Bytes()); + using (var ms = new MemoryStream(nestedJson.Utf8Bytes())) + return this._elasticSerializer.DeserializeInternal(ms); } internal string MapFromAttributes() { diff --git a/src/Profiling/Profiling.Indexing/Serializer/SsTextNestSerializer.cs b/src/Profiling/Profiling.Indexing/Serializer/SsTextNestSerializer.cs index 6ef064f2cd9..ff640ee3037 100644 --- a/src/Profiling/Profiling.Indexing/Serializer/SsTextNestSerializer.cs +++ b/src/Profiling/Profiling.Indexing/Serializer/SsTextNestSerializer.cs @@ -16,18 +16,18 @@ public SsTextNestSerializer(IConnectionSettingsValues settings) { } - public override T Deserialize(byte[] bytes) - { - JsConfig.EmitCamelCaseNames = true; - return Encoding.UTF8.GetString(bytes).FromJson(); - } + //public override T Deserialize(Str) + //{ + // JsConfig.EmitCamelCaseNames = true; + // return Encoding.UTF8.GetString(bytes).FromJson(); + //} - public override byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented) - { - if (formatting == SerializationFormatting.None) - return base.Serialize(data, formatting); - JsConfig.EmitCamelCaseNames = true; - return Encoding.UTF8.GetBytes(data.ToJson()); - } + //public override byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented) + //{ + // if (formatting == SerializationFormatting.None) + // return base.Serialize(data, formatting); + // JsConfig.EmitCamelCaseNames = true; + // return Encoding.UTF8.GetBytes(data.ToJson()); + //} } } diff --git a/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs b/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs index 8d63357cd53..5c8265e898f 100644 --- a/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs +++ b/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Linq; using System.Text; using Elasticsearch.Net.Serialization; @@ -21,6 +22,11 @@ public T Deserialize(byte[] bytes) where T : class var s = Encoding.UTF8.GetString(bytes); return JsonConvert.DeserializeObject(s, this._settings); + + //var serializer = new JsonSerializer(); + //var jsonTextReader = new JsonTextReader(new StreamReader(stream)); + //return serializer.Deserialize(jsonTextReader); + // JsonConvert.DeserializeObject() } public byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented) diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs index 3d2c581ff35..d1cc9c76ac8 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs @@ -34,9 +34,8 @@ static YamlTestsBase() var settings = new ConnectionConfiguration(uri).UsePrettyResponses(); _client = new ElasticsearchClient(settings); var infoResponse = _client.Info(); - dynamic info = infoResponse.DynamicResult; + dynamic info = infoResponse.Response; _versionNumber = new Version(info.version.number); - } public YamlTestsBase() diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs b/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs index 892fc249739..c2054fb4eef 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs @@ -23,7 +23,7 @@ public void DefaultPath() ); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus); StringAssert.EndsWith("/nest_test_data/elasticsearchprojects/_mapping", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } From 8059c6dd7c36878b3fbaadd88d127d64fc732e62 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Tue, 18 Mar 2014 22:26:28 +0100 Subject: [PATCH 04/12] started on fixing unit test compilation issues --- .../Connection/HttpConnection.cs | 12 +-- .../Connection/InMemoryConnection.cs | 2 +- .../Domain/ElasticsearchResponse.cs | 97 ++----------------- .../Domain/Responses/IndexExistsResponse.cs | 2 +- .../YamlTestsBase.cs | 23 ++--- .../Connection/ConcurrencyTests.cs | 4 +- .../Connection/SkipDeadNodesTests.cs | 28 +++--- .../Connection/SniffingConnectionPoolTests.cs | 55 ++++++----- .../StaticConnectionPoolRetryTests.cs | 71 +++++++++++--- .../Stubs/NoopConnection.cs | 56 +++++------ .../Core/DeleteTests.cs | 9 +- .../Core/Map/BaseMappingTests.cs | 3 +- .../Index/GetIdFromElasticsearchTests.cs | 4 +- .../Indices/OpenCloseTests.cs | 8 +- .../Integration/Filter/BoolFilterTests.cs | 5 +- .../Filter/MissingExistsFilterTests.cs | 3 +- .../Integration/Filter/RangeFilterTests.cs | 3 +- .../Integration/Query/BoolQueryResults.cs | 7 +- .../Integration/Query/TermToString.cs | 7 +- .../IntegrationTests.cs | 13 ++- .../Search/QueryResponseMapperTests.cs | 3 +- .../Search/SearchType/SearchTypeScanTests.cs | 3 +- .../Nest.Tests.Unit/Core/Get/GetTests.cs | 4 +- .../Core/Map/PutMappingRequestTests.cs | 11 ++- .../Core/MoreLikeThis/MltUrlTests.cs | 2 +- .../Core/Template/PutTemplateRequestTests.cs | 3 +- .../Core/Warmers/PutWarmerRequestTests.cs | 7 +- 27 files changed, 212 insertions(+), 233 deletions(-) diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 77969a88075..dcb76fdff86 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -90,7 +90,7 @@ public virtual IList Sniff(Uri uri) { if (response.StatusCode != HttpStatusCode.OK) return new List(); - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int)response.StatusCode, "GET", uri.AbsolutePath, null); + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int)response.StatusCode, "GET", uri.AbsolutePath, null); return Sniffer.FromStream(cs, responseStream, this._ConnectionSettings.Serializer); } } @@ -234,7 +234,7 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebReques s = memoryStream; } - cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); var result = this._ConnectionSettings.Serializer.Deserialize(cs, s, deserializationState); cs.Response = result; cs.ResponseRaw = memoryStream.ToArray(); @@ -244,7 +244,7 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebReques } catch (WebException webException) { - cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); + cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); tracer.SetResult(cs); _ConnectionSettings.ConnectionStatusHandler(cs); return cs; @@ -269,7 +269,7 @@ protected virtual Task> DoAsyncRequest(HttpWebReques { var m = "Could not start the operation before the timeout of " + timeout + "ms completed while waiting for the semaphore"; - var cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, new TimeoutException(m), method, path, data); + var cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, new TimeoutException(m), method, path, data); tcs.SetResult(cs); tracer.SetResult(cs); _ConnectionSettings.ConnectionStatusHandler(cs); @@ -345,7 +345,7 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionS } s = memoryStream; } - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); var t = this._ConnectionSettings.Serializer.DeserializeAsync(cs, s, deserializationState); yield return t; cs.Response = t.Result; @@ -374,7 +374,7 @@ public void Iterate(HttpWebRequest request, byte[] data, IEnumerable as { var path = request.RequestUri.ToString(); var method = request.Method; - var response = ElasticsearchResponse.CreateError(this._ConnectionSettings, exception, method, path, data); + var response = ElasticsearchResponse.CreateError(this._ConnectionSettings, exception, method, path, data); tcs.SetResult(response); } else diff --git a/src/Elasticsearch.Net/Connection/InMemoryConnection.cs b/src/Elasticsearch.Net/Connection/InMemoryConnection.cs index 836dc18bece..0ec844b6205 100644 --- a/src/Elasticsearch.Net/Connection/InMemoryConnection.cs +++ b/src/Elasticsearch.Net/Connection/InMemoryConnection.cs @@ -29,7 +29,7 @@ private ElasticsearchResponse ReturnConnectionStatus(HttpWebRequest reques var method = request.Method; var path = request.RequestUri.ToString(); - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, 200, method, path, data); + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, 200, method, path, data); _ConnectionSettings.ConnectionStatusHandler(cs); return cs; } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index 68617607ae1..e21f8a5771b 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -23,95 +23,11 @@ public interface IElasticsearchResponse string RequestUrl { get; } byte[] Request { get; } int? HttpStatusCode { get; } - } - - public class ElasticsearchResponse : ElasticsearchResponse, IElasticsearchResponse - { - private string _result; - public string Result - { - get { return _result ?? (_result = this.Response.Utf8String()); } - } - - private static readonly byte _startAccolade = (byte)'{'; - private DynamicDictionary _response; - public DynamicDictionary DynamicResult - { - get - { - if (Response == null || Response.Length == 0) - return null; - if (Response[0] != _startAccolade) - return null; - - //if (_response == null) - //this._response = ElasticsearchDynamic.Create(this.Deserialize>()); - return this._response; - } - } - protected ElasticsearchResponse(IConnectionConfigurationValues settings) : base(settings) - { - this.Settings = settings; - this.Serializer = settings.Serializer; - } - - private ElasticsearchResponse(IConnectionConfigurationValues settings, Exception e) : this(settings) - { - this.Success = false; - this.Error = new ConnectionError(e); - if (this.Error.ResponseReadFromWebException != null) - this.Response = this.Error.ResponseReadFromWebException; - if (this.Error.HttpStatusCode != null) - this.HttpStatusCode = (int) this.Error.HttpStatusCode; - } - private ElasticsearchResponse(IConnectionConfigurationValues settings, int statusCode, byte[] response = null) : this(settings) - { - this.Success = statusCode >= 200 && statusCode < 300; - if (!this.Success) - { - var exception = new ConnectionException(statusCode); - this.Error = new ConnectionError(exception); - } - this.Response = response; - this.HttpStatusCode = statusCode; - } - - public static ElasticsearchResponse CreateError(IConnectionConfigurationValues settings, Exception e, string method, string path, byte[] request) - { - var cs = new ElasticsearchResponse(settings, e); - cs.Request = request; - cs.RequestUrl = path; - cs.RequestMethod = method; - return cs; - } - public static ElasticsearchResponse Create(IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request, byte[] response) - { - var cs = new ElasticsearchResponse(settings, statusCode, response); - cs.Request = request; - cs.RequestUrl = path; - cs.RequestMethod = method; - return cs; - } - - public override string ToString() - { - var r = this; - var e = r.Error; - var print = _printFormat.F( - Environment.NewLine, - r.HttpStatusCode.HasValue ? r.HttpStatusCode.Value.ToString(CultureInfo.InvariantCulture) : "-1", - r.RequestMethod, - r.RequestUrl, - r.Request, - r.Result - ); - if (!this.Success) - { - print += _errorFormat.F(Environment.NewLine, e.ExceptionMessage, e.OriginalException.StackTrace); - } - return print; - } + /// + /// The raw byte response, only set when IncludeRawResponse() is set on Connection configuration + /// + byte[] ResponseRaw { get; } } public class ElasticsearchResponse : IElasticsearchResponse @@ -129,6 +45,7 @@ public class ElasticsearchResponse : IElasticsearchResponse public T Response { get; protected internal set; } public byte[] Request { get; protected internal set; } + /// /// The raw byte response, only set when IncludeRawResponse() is set on Connection configuration /// @@ -175,7 +92,7 @@ private ElasticsearchResponse(IConnectionConfigurationValues settings, int statu } this.HttpStatusCode = statusCode; } - public static ElasticsearchResponse CreateError(IConnectionConfigurationValues settings, Exception e, string method, string path, byte[] request) + public static ElasticsearchResponse CreateError(IConnectionConfigurationValues settings, Exception e, string method, string path, byte[] request) { var cs = new ElasticsearchResponse(settings, e); cs.Request = request; @@ -183,7 +100,7 @@ public static ElasticsearchResponse CreateError(IConnectionConfigurationVa cs.RequestMethod = method; return cs; } - public static ElasticsearchResponse Create(IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request) + public static ElasticsearchResponse Create(IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request) { var cs = new ElasticsearchResponse(settings, statusCode); cs.Request = request; diff --git a/src/Nest/Domain/Responses/IndexExistsResponse.cs b/src/Nest/Domain/Responses/IndexExistsResponse.cs index 6c744956eca..ed58811cb82 100644 --- a/src/Nest/Domain/Responses/IndexExistsResponse.cs +++ b/src/Nest/Domain/Responses/IndexExistsResponse.cs @@ -12,7 +12,7 @@ public interface IIndexExistsResponse : IResponse [JsonObject] public class IndexExistsResponse : BaseResponse, IIndexExistsResponse { - internal IndexExistsResponse(ElasticsearchResponse connectionStatus) + internal IndexExistsResponse(IElasticsearchResponse connectionStatus) { this.ConnectionStatus = connectionStatus; this.IsValid = connectionStatus.Error == null || connectionStatus.Error.HttpStatusCode == HttpStatusCode.NotFound; diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs index d1cc9c76ac8..67569bed2a3 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs @@ -22,7 +22,7 @@ public class YamlTestsBase protected static readonly Version _versionNumber; protected object _body; - protected ElasticsearchResponse _status; + protected ElasticsearchResponse _status; protected dynamic _response; static YamlTestsBase() @@ -43,7 +43,7 @@ public YamlTestsBase() _client.IndicesDelete("*"); } - protected void Do(Func action, string shouldCatch = null) + protected void Do(Func> action, string shouldCatch = null) { try { @@ -75,10 +75,10 @@ protected void Do(Func action, string shouldCatch = null) else if (shouldCatch != null && shouldCatch.StartsWith("/")) { var re = shouldCatch.Trim('/'); - Assert.IsTrue(Regex.IsMatch(this._status.Result, re), + Assert.IsTrue(Regex.IsMatch(Encoding.UTF8.GetString(this._status.ResponseRaw), re), "response does not match regex: " + shouldCatch); } - this._response = this._status.DynamicResult; + this._response = this._status.Response; } protected void Skip(string version, string reason) @@ -100,15 +100,15 @@ private string PatchVersion(string version) protected void IsTrue(object o) { if (o == null) Assert.Fail("null is not true value"); - if (o is ElasticsearchResponse) + if (o is IElasticsearchResponse) { - var c = o as ElasticsearchResponse; + var c = o as IElasticsearchResponse; if (c.RequestMethod == "HEAD" && c.Error != null) { Assert.Fail("HEAD request returned status:" + c.Error.HttpStatusCode); } else if (c.RequestMethod == "HEAD") return; - o = c.Result; + o = Encoding.UTF8.GetString(c.ResponseRaw); } o = Unbox(o); @@ -149,9 +149,9 @@ protected void IsFalse(object o) { if (o == null) return; - if (o is ElasticsearchResponse) + if (o is IElasticsearchResponse) { - var c = o as ElasticsearchResponse; + var c = o as IElasticsearchResponse; if (c.RequestMethod == "HEAD" && c.Error == null) { Assert.Fail("HEAD request did not return error status but:" @@ -218,7 +218,7 @@ private static object Unbox(object o) if (o is JValue) o = ((JValue)o).Value; if (o is JArray) o = ((JArray) o).ToObject(); if (o is JObject) o = ((JToken) o).ToObject>(); - if (o is ElasticsearchResponse) o = ((ElasticsearchResponse)o).Result; + if (o is ElasticsearchResponse) o = ((ElasticsearchResponse)o).Response; return o; } @@ -304,7 +304,8 @@ protected void IsMatch(object o, object value) else if (v.StartsWith("/")) { var re = Regex.Replace(v, @"(^[\s\r\n]*?\/|\/[\s\r\n]*?$)", ""); - Assert.IsTrue(Regex.IsMatch(this._status.Result, re, RegexOptions.IgnorePatternWhitespace)); + var r = Encoding.UTF8.GetString(this._status.ResponseRaw); + Assert.IsTrue(Regex.IsMatch(r, re, RegexOptions.IgnorePatternWhitespace)); } else Assert.AreEqual(s, v); } diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs index 6522e227f7e..fe27edd3546 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs @@ -132,13 +132,13 @@ public override IList Sniff(Uri uri) return _rnd.Next(1, 11) % 3 == 0 ? _uris : _uris2; } - public override ElasticsearchResponse GetSync(Uri uri) + public override ElasticsearchResponse GetSync(Uri uri, object deserializationState = null) { var statusCode = _rnd.Next(1, 9) % 3 == 0 ? 503 : 200; if (uri.Port == 9202) statusCode = 200; - return ElasticsearchResponse.Create(this._ConnectionSettings, statusCode, "GET", "/", null, null); + return ElasticsearchResponse.Create(this._ConnectionSettings, statusCode, "GET", "/", null); } } diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs index 23b061287b7..b7b9740ac24 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs @@ -63,18 +63,18 @@ public void DeadNodesAreNotVisited() var connection = fake.Resolve(); var seenNodes = new List(); - var getCall = A.CallTo(() => connection.GetSync(A._)); + var getCall = A.CallTo(() => connection.GetSync(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 1 - 9204 - ElasticsearchResponse.Create(config, 503, "GET", "/", null, null), //info 2 - 9203 DEAD - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 2 retry - 9202 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 3 - 9201 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 4 - 9204 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 5 - 9202 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 6 - 9201 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 7 - 9204 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 8 - 9203 (Now > Timeout) - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null) //info 9 - 9202 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 1 - 9204 + ElasticsearchResponse.Create(config, 503, "GET", "/", null), //info 2 - 9203 DEAD + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 2 retry - 9202 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 3 - 9201 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 4 - 9204 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 5 - 9202 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 6 - 9201 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 7 - 9204 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 8 - 9203 (Now > Timeout) + ElasticsearchResponse.Create(config, 200, "GET", "/", null) //info 9 - 9202 ); getCall.Invokes((Uri u) => seenNodes.Add(u)); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); @@ -149,11 +149,11 @@ public async void DeadNodesAreNotVisited_Async() fake.Provide(fake.Resolve()); var connection = fake.Resolve(); - var ok = Task.FromResult(ElasticsearchResponse.Create(config, 200, "GET", "/", null, null)); - var bad = Task.FromResult(ElasticsearchResponse.Create(config, 503, "GET", "/", null, null)); + var ok = Task.FromResult(ElasticsearchResponse.Create(config, 200, "GET", "/", null)); + var bad = Task.FromResult(ElasticsearchResponse.Create(config, 503, "GET", "/", null)); var seenNodes = new List(); - var getCall = A.CallTo(() => connection.Get(A._)); + var getCall = A.CallTo(() => connection.Get(A._, A._)); getCall.ReturnsNextFromSequence( ok, //info 1 - 9204 bad, //info 2 - 9203 DEAD diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs index 06140b9aa6e..1f724429b73 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs @@ -9,6 +9,7 @@ using Elasticsearch.Net.ConnectionPool; using Elasticsearch.Net.Exceptions; using Elasticsearch.Net.Providers; +using Elasticsearch.Net.Tests.Unit.ConnectionA; using FakeItEasy; using FakeItEasy.Configuration; using FluentAssertions; @@ -67,8 +68,9 @@ public void SniffIsCalledAfterItHasGoneOutOfDate() fake.Provide(fake.Resolve()); var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); - var getCall = A.CallTo(() => connection.GetSync(A._)); - getCall.Returns(ElasticsearchResponse.Create(config, 200, "GET", "/", null, null)); + + var getCall = FakeResponse.GetSyncCall(fake); + getCall.Returns(FakeResponse.Ok(config)); var client1 = fake.Resolve(); client1.Info(); //info call 1 @@ -107,14 +109,14 @@ public void SniffIsCalledAfterItHasGoneOutOfDate_NotWhenItSeesA503() fake.Provide(fake.Resolve()); var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); - var getCall = A.CallTo(() => connection.GetSync(A._)); + var getCall = FakeResponse.GetSyncCall(fake); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 1 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 2 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 3 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //sniff - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 4 - ElasticsearchResponse.Create(config, 503, "GET", "/", null, null) //info 5 + FakeResponse.Ok(config), //info 1 + FakeResponse.Ok(config), //info 2 + FakeResponse.Ok(config), //info 3 + FakeResponse.Ok(config), //sniff + FakeResponse.Ok(config), //info 4 + FakeResponse.Bad(config) //info 5 ); var client1 = fake.Resolve(); @@ -147,13 +149,14 @@ public void SniffOnConnectionFaultCausesSniffOn503() fake.Provide(fake.Resolve()); var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); - var getCall = A.CallTo(() => connection.GetSync(A._)); + var getCall = FakeResponse.GetSyncCall(fake); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 1 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 2 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 3 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 4 - ElasticsearchResponse.Create(config, 503, "GET", "/", null, null) //info 5 + + FakeResponse.Ok(config), //info 1 + FakeResponse.Ok(config), //info 2 + FakeResponse.Ok(config), //info 3 + FakeResponse.Ok(config), //info 4 + FakeResponse.Bad(config) //info 5 ); var client1 = fake.Resolve(); @@ -198,18 +201,18 @@ public void HostsReturnedBySniffAreVisited() }); var seenNodes = new List(); - var getCall = A.CallTo(() => connection.GetSync(A._)); + var getCall = A.CallTo(() => connection.GetSync(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 1 - ElasticsearchResponse.Create(config, 503, "GET", "/", null, null), //info 2 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 2 retry - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 3 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 4 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 5 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 6 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 7 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null), //info 8 - ElasticsearchResponse.Create(config, 200, "GET", "/", null, null) //info 9 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 1 + ElasticsearchResponse.Create(config, 503, "GET", "/", null), //info 2 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 2 retry + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 3 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 4 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 5 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 6 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 7 + ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 8 + ElasticsearchResponse.Create(config, 200, "GET", "/", null) //info 9 ); getCall.Invokes((Uri u) => seenNodes.Add(u)); diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs index f8b1eb8283d..cd64ab86822 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs @@ -14,11 +14,44 @@ using Elasticsearch.Net.Providers; using Elasticsearch.Net.Tests.Unit.Stubs; using FakeItEasy; +using FakeItEasy.Configuration; using FluentAssertions; using NUnit.Framework; namespace Elasticsearch.Net.Tests.Unit.ConnectionA { + public static class FakeResponse + { + public static ElasticsearchResponse Ok( + IConnectionConfigurationValues config, + string method = "GET", + string path = "/") + { + return ElasticsearchResponse.Create(config, 200, method, path, null); + } + + public static ElasticsearchResponse Bad( + IConnectionConfigurationValues config, + string method = "GET", + string path = "/") + { + return ElasticsearchResponse.Create(config, 503, method, path, null); + } + + public static IReturnValueArgumentValidationConfiguration> GetSyncCall(AutoFake fake) + { + return A.CallTo(() => + fake.Resolve().GetSync(A._, A._)); + } + public static IReturnValueArgumentValidationConfiguration>> GetCall(AutoFake fake) + { + return A.CallTo(() => + fake.Resolve().Get(A._, A._)); + } + + } + + [TestFixture] public class StaticConnectionPoolRetryTests { @@ -58,7 +91,7 @@ public void ThrowsOutOfNodesException_AndRetriesTheSpecifiedTimes() //set up fake for a call on IConnection.GetSync so that it always throws //an exception - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + var getCall = GetSync(fake); getCall.Throws(); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); @@ -82,6 +115,8 @@ public void ThrowsOutOfNodesException_AndRetriesTheSpecifiedTimes() } } + + [Test] public void AllNodesMustBeTriedOnce() { @@ -124,7 +159,8 @@ public void HardRetryLimitTakesPrecedenceOverNumberOfNodes() new ConnectionConfiguration(_connectionPool) .MaximumRetries(7) ); - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + var getCall = A.CallTo(() => + fake.Resolve().GetSync(A._, A._)); getCall.Throws(); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); @@ -155,13 +191,14 @@ public void AConnectionMustBeMadeEvenIfAllNodesAreDead() .MaximumRetries(4) ); //set up our GET to / to return 4 503's followed by a 200 - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + var getCall = A.CallTo(() => + fake.Resolve().GetSync(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null, null) + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 200, "GET", "/", null) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); @@ -212,9 +249,10 @@ public void AllNodesWillBeMarkedDead() call.Returns(DateTime.UtcNow.AddSeconds(60)); //When we do a GET on / we always recieve a 503 - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + var getCall = A.CallTo(() => + fake.Resolve().GetSync(A._, A._)); getCall.Returns( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null) + ElasticsearchResponse.Create(_config, 503, "GET", "/", null) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); @@ -259,13 +297,14 @@ public void IfAConnectionComesBackToLifeOnItsOwnItShouldBeMarked() //fake getsync handler that return a 503 4 times and then a 200 //this will cause all 4 nodes to be marked dead on the first client call - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + var getCall = A.CallTo(() => + fake.Resolve().GetSync(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null, null) + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse.Create(_config, 200, "GET", "/", null) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs index 1acfa0ee85e..29c359d5ef2 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs @@ -19,12 +19,12 @@ public virtual void Observe(Uri uri) { } public interface IResponseGenerator { - ElasticsearchResponse Create(); + ElasticsearchResponse Create(); } public class ResponseGenerator : IResponseGenerator { - public virtual ElasticsearchResponse Create() + public virtual ElasticsearchResponse Create() { return null; } @@ -47,75 +47,75 @@ IConnectionConfigurationValues configValues } - public virtual Task Get(Uri uri) + public virtual Task> Get(Uri uri, object deserializationState = null) { - return DoAsyncRequest(uri); + return DoAsyncRequest(uri); } - public virtual ElasticsearchResponse GetSync(Uri uri) + public virtual ElasticsearchResponse GetSync(Uri uri, object deserializationState = null) { _uriObserver.Observe(uri); - return _responseGenerator.Create(); + return _responseGenerator.Create(); } - public virtual Task Head(Uri uri) + public virtual Task> Head(Uri uri) { _uriObserver.Observe(uri); - return Task.FromResult(_responseGenerator.Create()); + return Task.FromResult(_responseGenerator.Create()); } - public virtual ElasticsearchResponse HeadSync(Uri uri) + public virtual ElasticsearchResponse HeadSync(Uri uri) { _uriObserver.Observe(uri); - return _responseGenerator.Create(); + return _responseGenerator.Create(); } - public virtual Task Post(Uri uri, byte[] data) + public virtual Task> Post(Uri uri, byte[] data, object deserializationState = null) { _uriObserver.Observe(uri); - return Task.FromResult(_responseGenerator.Create()); + return Task.FromResult(_responseGenerator.Create()); } - public virtual ElasticsearchResponse PostSync(Uri uri, byte[] data) + public virtual ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializationState = null) { _uriObserver.Observe(uri); - return _responseGenerator.Create(); + return _responseGenerator.Create(); } - public virtual Task Put(Uri uri, byte[] data) + public virtual Task> Put(Uri uri, byte[] data, object deserializationState = null) { _uriObserver.Observe(uri); - return Task.FromResult(_responseGenerator.Create()); + return Task.FromResult(_responseGenerator.Create()); } - public virtual ElasticsearchResponse PutSync(Uri uri, byte[] data) + public virtual ElasticsearchResponse PutSync(Uri uri, byte[] data, object deserializationState = null) { _uriObserver.Observe(uri); - return _responseGenerator.Create(); + return _responseGenerator.Create(); } - public virtual Task Delete(Uri uri) + public virtual Task> Delete(Uri uri, object deserializationState = null) { _uriObserver.Observe(uri); - return Task.FromResult(_responseGenerator.Create()); + return Task.FromResult(_responseGenerator.Create()); } - public virtual ElasticsearchResponse DeleteSync(Uri uri) + public virtual ElasticsearchResponse DeleteSync(Uri uri, object deserializationState = null) { _uriObserver.Observe(uri); - return _responseGenerator.Create(); + return _responseGenerator.Create(); } - public virtual Task Delete(Uri uri, byte[] data) + public virtual Task> Delete(Uri uri, byte[] data, object deserializationState = null) { _uriObserver.Observe(uri); - return Task.FromResult(_responseGenerator.Create()); + return Task.FromResult(_responseGenerator.Create()); } - public virtual ElasticsearchResponse DeleteSync(Uri uri, byte[] data) + public virtual ElasticsearchResponse DeleteSync(Uri uri, byte[] data, object deserializationState = null) { _uriObserver.Observe(uri); - return _responseGenerator.Create(); + return _responseGenerator.Create(); } public bool Ping(Uri uri) @@ -128,10 +128,10 @@ public IList Sniff(Uri uri) throw new NotImplementedException(); } - private Task DoAsyncRequest(Uri uri) + private Task> DoAsyncRequest(Uri uri) { _uriObserver.Observe(uri); - return Task.FromResult(_responseGenerator.Create()); + return Task.FromResult(_responseGenerator.Create()); } } } diff --git a/src/Tests/Nest.Tests.Integration/Core/DeleteTests.cs b/src/Tests/Nest.Tests.Integration/Core/DeleteTests.cs index a920a3c0d58..012feba1ea9 100644 --- a/src/Tests/Nest.Tests.Integration/Core/DeleteTests.cs +++ b/src/Tests/Nest.Tests.Integration/Core/DeleteTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Elasticsearch.Net; using FluentAssertions; using Nest.Tests.MockData; using Nest.Tests.MockData.Domain; @@ -174,8 +175,8 @@ public void RemoveAllByPassingAsIEnumerable() Assert.Greater(totalSet, 0); var deleteResult = this._client.Bulk(b => b.DeleteMany(result.Documents).Refresh()); - Assert.True(deleteResult.IsValid, deleteResult.ConnectionStatus.Result); - Assert.False(deleteResult.Errors, deleteResult.ConnectionStatus.Result); + Assert.True(deleteResult.IsValid, deleteResult.ConnectionStatus.ResponseRaw.Utf8String()); + Assert.False(deleteResult.Errors, deleteResult.ConnectionStatus.ResponseRaw.Utf8String()); Assert.IsNotEmpty(deleteResult.Items); @@ -196,8 +197,8 @@ public void RemoveAllByPassingAsIEnumerableOfBulkParameters() var totalResults = result.Total; var deleteResult = this._client.Bulk(b=>b.DeleteMany(result.Documents, (p, o) => p.VersionType(VersionType.Internal)).Refresh()); - Assert.True(deleteResult.IsValid, deleteResult.ConnectionStatus.Result); - Assert.False(deleteResult.Errors, deleteResult.ConnectionStatus.Result); + Assert.True(deleteResult.IsValid, deleteResult.ConnectionStatus.ResponseRaw.Utf8String()); + Assert.False(deleteResult.Errors, deleteResult.ConnectionStatus.ResponseRaw.Utf8String()); Assert.IsNotEmpty(deleteResult.Items); diff --git a/src/Tests/Nest.Tests.Integration/Core/Map/BaseMappingTests.cs b/src/Tests/Nest.Tests.Integration/Core/Map/BaseMappingTests.cs index 5fea3da8ff9..30ba293fd5e 100644 --- a/src/Tests/Nest.Tests.Integration/Core/Map/BaseMappingTests.cs +++ b/src/Tests/Nest.Tests.Integration/Core/Map/BaseMappingTests.cs @@ -1,4 +1,5 @@ using System; +using Elasticsearch.Net; using FluentAssertions; using NUnit.Framework; using Nest.Tests.MockData.Domain; @@ -18,7 +19,7 @@ protected void DefaultResponseAssertations(IIndicesResponse result) { result.Should().NotBeNull(); if (!result.IsValid) - throw new Exception(result.ConnectionStatus.Result); + throw new Exception(result.ConnectionStatus.ResponseRaw.Utf8String()); result.IsValid.Should().BeTrue(); } } diff --git a/src/Tests/Nest.Tests.Integration/Index/GetIdFromElasticsearchTests.cs b/src/Tests/Nest.Tests.Integration/Index/GetIdFromElasticsearchTests.cs index 590e2b482a9..319ba50b854 100644 --- a/src/Tests/Nest.Tests.Integration/Index/GetIdFromElasticsearchTests.cs +++ b/src/Tests/Nest.Tests.Integration/Index/GetIdFromElasticsearchTests.cs @@ -40,8 +40,8 @@ public void IndexmanyWithoutIdShouldSetIdFromElasticseach() new LogClass { Message = "Some Message3" } }; var response = this._client.IndexMany(newProjects); - Assert.IsTrue(response.IsValid, response.ConnectionStatus.Result); - Assert.IsFalse(response.Errors, response.ConnectionStatus.Result); + Assert.IsTrue(response.IsValid, response.ConnectionStatus.ResponseRaw.Utf8String()); + Assert.IsFalse(response.Errors, response.ConnectionStatus.ResponseRaw.Utf8String()); Assert.IsNotEmpty(response.Items); Assert.True(response.Items.All(i => !i.Id.IsNullOrEmpty())); } diff --git a/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs b/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs index a911ddcc3e0..d42fed367c0 100644 --- a/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs +++ b/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs @@ -1,4 +1,5 @@ -using Nest.Tests.MockData.Domain; +using Elasticsearch.Net; +using Nest.Tests.MockData.Domain; using NUnit.Framework; namespace Nest.Tests.Integration.Indices @@ -40,8 +41,9 @@ public void CloseAndSearchAndOpenIndex() Assert.False(results.IsValid); Assert.IsNotNull(results.ConnectionStatus.Error); Assert.True(results.ConnectionStatus.Error.HttpStatusCode == System.Net.HttpStatusCode.Forbidden, results.ConnectionStatus.Error.HttpStatusCode.ToString()); - Assert.True(results.ConnectionStatus.Result.Contains("ClusterBlockException")); - Assert.True(results.ConnectionStatus.Result.Contains("index closed")); + var result = results.ConnectionStatus.ResponseRaw.Utf8String(); + Assert.True(result.Contains("ClusterBlockException")); + Assert.True(result.Contains("index closed")); r = this._client.OpenIndex(ElasticsearchConfiguration.DefaultIndex); Assert.True(r.Acknowledged); Assert.True(r.IsValid); diff --git a/src/Tests/Nest.Tests.Integration/Integration/Filter/BoolFilterTests.cs b/src/Tests/Nest.Tests.Integration/Integration/Filter/BoolFilterTests.cs index 31e5de9e9fb..d490efbe252 100644 --- a/src/Tests/Nest.Tests.Integration/Integration/Filter/BoolFilterTests.cs +++ b/src/Tests/Nest.Tests.Integration/Integration/Filter/BoolFilterTests.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using Elasticsearch.Net; +using NUnit.Framework; using Nest.Tests.MockData.Domain; namespace Nest.Tests.Integration.Integration.Filter @@ -29,7 +30,7 @@ public void BoolFilter() ) ) ); - Assert.True(results.IsValid, results.ConnectionStatus.Result); + Assert.True(results.IsValid, results.ConnectionStatus.ResponseRaw.Utf8String()); Assert.Greater(results.Total, 0); Assert.Greater(results.Total, 10); diff --git a/src/Tests/Nest.Tests.Integration/Integration/Filter/MissingExistsFilterTests.cs b/src/Tests/Nest.Tests.Integration/Integration/Filter/MissingExistsFilterTests.cs index a53a57bfd33..17c454c50dd 100644 --- a/src/Tests/Nest.Tests.Integration/Integration/Filter/MissingExistsFilterTests.cs +++ b/src/Tests/Nest.Tests.Integration/Integration/Filter/MissingExistsFilterTests.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Linq.Expressions; +using Elasticsearch.Net; using FluentAssertions; using NUnit.Framework; using Nest.Tests.MockData; @@ -41,7 +42,7 @@ public void Initialize() _LookFor.Name = null; var status = this._client.Index(_LookFor, i=>i.Refresh()).ConnectionStatus; - Assert.True(status.Success, status.Result); + Assert.True(status.Success, status.ResponseRaw.Utf8String()); } diff --git a/src/Tests/Nest.Tests.Integration/Integration/Filter/RangeFilterTests.cs b/src/Tests/Nest.Tests.Integration/Integration/Filter/RangeFilterTests.cs index cfc4c24a785..c79ce9a832d 100644 --- a/src/Tests/Nest.Tests.Integration/Integration/Filter/RangeFilterTests.cs +++ b/src/Tests/Nest.Tests.Integration/Integration/Filter/RangeFilterTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using Elasticsearch.Net; using FluentAssertions; using NUnit.Framework; using Nest.Tests.MockData; @@ -23,7 +24,7 @@ public void Initialize() _LookFor = NestTestData.Session.Single().Get(); _LookFor.Name = "mmm"; var status = this._client.Index(_LookFor, i=>i.Refresh()).ConnectionStatus; - Assert.True(status.Success, status.Result); + Assert.True(status.Success, status.ResponseRaw.Utf8String()); } diff --git a/src/Tests/Nest.Tests.Integration/Integration/Query/BoolQueryResults.cs b/src/Tests/Nest.Tests.Integration/Integration/Query/BoolQueryResults.cs index 95590bd898b..21cb6012a29 100644 --- a/src/Tests/Nest.Tests.Integration/Integration/Query/BoolQueryResults.cs +++ b/src/Tests/Nest.Tests.Integration/Integration/Query/BoolQueryResults.cs @@ -1,5 +1,6 @@ using System; using System.Reflection; +using Elasticsearch.Net; using FluentAssertions; using NUnit.Framework; using Nest.Tests.Integration; @@ -23,7 +24,7 @@ public void Initialize() _LookFor = NestTestData.Session.Single().Get(); _LookFor.Name = "one two three four"; var status = this._client.Index(_LookFor, i=>i.Refresh()).ConnectionStatus; - Assert.True(status.Success, status.Result); + Assert.True(status.Success, status.ResponseRaw.Utf8String()); } [Test] @@ -95,8 +96,8 @@ public void FourTermsOfTwoDocuments() private void AssertBoolQueryResults(IQueryResponse results, int expectedCount) { - Assert.True(results.IsValid, results.ConnectionStatus.Result); - Assert.True(results.ConnectionStatus.Success, results.ConnectionStatus.Result); + Assert.True(results.IsValid, results.ConnectionStatus.ResponseRaw.Utf8String()); + Assert.True(results.ConnectionStatus.Success, results.ConnectionStatus.ResponseRaw.Utf8String()); Assert.GreaterOrEqual(results.Total, expectedCount); } } diff --git a/src/Tests/Nest.Tests.Integration/Integration/Query/TermToString.cs b/src/Tests/Nest.Tests.Integration/Integration/Query/TermToString.cs index 38365d8d376..1b35bdac222 100644 --- a/src/Tests/Nest.Tests.Integration/Integration/Query/TermToString.cs +++ b/src/Tests/Nest.Tests.Integration/Integration/Query/TermToString.cs @@ -1,5 +1,6 @@ using System; using System.Reflection; +using Elasticsearch.Net; using FluentAssertions; using NUnit.Framework; using Nest.Tests.Integration; @@ -23,7 +24,7 @@ public void Initialize() _LookFor = NestTestData.Session.Single().Get(); _LookFor.Name = "one two three four"; var status = this._client.Index(_LookFor, i=>i.Refresh()).ConnectionStatus; - Assert.True(status.Success, status.Result); + Assert.True(status.Success, status.ResponseRaw.Utf8String()); } [Test] @@ -96,8 +97,8 @@ public void BoolToStringTests() private void AssertTermResults(IQueryResponse results) { - Assert.True(results.IsValid, results.ConnectionStatus.Result); - Assert.True(results.ConnectionStatus.Success, results.ConnectionStatus.Result); + Assert.True(results.IsValid, results.ConnectionStatus.ResponseRaw.Utf8String()); + Assert.True(results.ConnectionStatus.Success, results.ConnectionStatus.ResponseRaw.Utf8String()); Assert.GreaterOrEqual(results.Total, 1); } } diff --git a/src/Tests/Nest.Tests.Integration/IntegrationTests.cs b/src/Tests/Nest.Tests.Integration/IntegrationTests.cs index 8fd931d0263..3f43bfaffb4 100644 --- a/src/Tests/Nest.Tests.Integration/IntegrationTests.cs +++ b/src/Tests/Nest.Tests.Integration/IntegrationTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Elasticsearch.Net; using Nest; using Nest.Tests.MockData; using Nest.Tests.MockData.Domain; @@ -25,9 +26,9 @@ protected IQueryResponse SearchRaw(string query) where T : class { var index = this._client.Infer.IndexName(); var typeName = this._client.Infer.TypeName(); - var connectionStatus = this._client.Raw.Search(index, typeName, query); + var connectionStatus = this._client.Raw.Search>(index, typeName, query); var serializer = connectionStatus.Serializer as INestSerializer; - return serializer.ToParsedResponse>(connectionStatus); + return connectionStatus.Response; } public void DoFilterTest(Func, Nest.BaseFilter> filter, ElasticsearchProject project, bool queryMustHaveResults) @@ -41,9 +42,11 @@ public void DoFilterTest(Func, Nest.BaseF )) ); - Assert.True(results.IsValid, results.ConnectionStatus.Result); - Assert.True(results.ConnectionStatus.Success, results.ConnectionStatus.Result); - Assert.AreEqual(queryMustHaveResults ? 1 : 0, results.Total); + var rawResponse = results.ConnectionStatus.ResponseRaw.Utf8String(); + + Assert.True(results.IsValid, rawResponse); + Assert.True(results.ConnectionStatus.Success, rawResponse); + Assert.AreEqual(queryMustHaveResults ? 1 : 0, rawResponse); } } diff --git a/src/Tests/Nest.Tests.Integration/Search/QueryResponseMapperTests.cs b/src/Tests/Nest.Tests.Integration/Search/QueryResponseMapperTests.cs index 5d9827c0d75..d198827c2ac 100644 --- a/src/Tests/Nest.Tests.Integration/Search/QueryResponseMapperTests.cs +++ b/src/Tests/Nest.Tests.Integration/Search/QueryResponseMapperTests.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Elasticsearch.Net; using Nest.Tests.MockData; using Nest.Tests.MockData.Domain; using NUnit.Framework; @@ -516,7 +517,7 @@ public void TestRawClientSearch() var result = this._client.Raw.Search(request); Assert.NotNull(result); Assert.True(result.Success); - Assert.IsNotEmpty(result.Result); + Assert.IsNotEmpty(result.ResponseRaw.Utf8String()); } diff --git a/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs b/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs index 33f413e650d..01c2971beac 100644 --- a/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs +++ b/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs @@ -22,7 +22,8 @@ public void SearchTypeScanWithoutScrollIsInvalid() .SearchType(SearchTypeOptions.Scan) ); Assert.False(queryResults.IsValid); - StringAssert.Contains("Scroll must be provided when scanning", queryResults.ConnectionStatus.Result); + StringAssert.Contains("Scroll must be provided when scanning", + queryResults.ConnectionStatus.ResponseRaw.Utf8String()); } [Test] public void SearchTypeScan() diff --git a/src/Tests/Nest.Tests.Unit/Core/Get/GetTests.cs b/src/Tests/Nest.Tests.Unit/Core/Get/GetTests.cs index f72c16444a0..ddf59a24ae1 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Get/GetTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Get/GetTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Elasticsearch.Net; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -21,7 +22,8 @@ public void GetSimple() { var result = this._client.Get(g=>g.Id(1)); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", + result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data/elasticsearchprojects/1", status.RequestUrl); } diff --git a/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs b/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs index c2054fb4eef..919624da6c3 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Map/PutMappingRequestTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Elasticsearch.Net; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -23,7 +24,7 @@ public void DefaultPath() ); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data/elasticsearchprojects/_mapping", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } @@ -34,7 +35,7 @@ public void AllIndices() .Indices("_all") ); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/_all/elasticsearchprojects/_mapping", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } @@ -45,7 +46,7 @@ public void MultipleIndices() .Indices("nest_test_data", "nest_test_data_clone") ); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data%2Cnest_test_data_clone/elasticsearchprojects/_mapping", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } @@ -57,7 +58,7 @@ public void MultipleIndicesIgnoreConflicts() .Indices("nest_test_data", "nest_test_data_clone") ); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data%2Cnest_test_data_clone/elasticsearchprojects/_mapping?ignore_conflicts=true", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } @@ -70,7 +71,7 @@ public void MultipleIndicesIgnoreConflictsCustomTypeName() .Indices("nest_test_data", "nest_test_data_clone") ); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data%2Cnest_test_data_clone/es_projects/_mapping?ignore_conflicts=true", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } diff --git a/src/Tests/Nest.Tests.Unit/Core/MoreLikeThis/MltUrlTests.cs b/src/Tests/Nest.Tests.Unit/Core/MoreLikeThis/MltUrlTests.cs index ff4b3624697..85e8a77e08b 100644 --- a/src/Tests/Nest.Tests.Unit/Core/MoreLikeThis/MltUrlTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/MoreLikeThis/MltUrlTests.cs @@ -12,7 +12,7 @@ public void MltSimpleById() { var result = this._client.MoreLikeThis(mlt => mlt.Id(1)); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data/elasticsearchprojects/1/_mlt", status.RequestUrl); StringAssert.AreEqualIgnoringCase("GET", status.RequestMethod); } diff --git a/src/Tests/Nest.Tests.Unit/Core/Template/PutTemplateRequestTests.cs b/src/Tests/Nest.Tests.Unit/Core/Template/PutTemplateRequestTests.cs index 9aaddbb2128..79a51cbf965 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Template/PutTemplateRequestTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Template/PutTemplateRequestTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Elasticsearch.Net; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -23,7 +24,7 @@ public void DefaultPath() var result = this._client.PutTemplate("myTestTemplateName", t=>t.Template("tmasdasda")); Assert.NotNull(result, "PutTemplate result should not be null"); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/_template/myTestTemplateName", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } diff --git a/src/Tests/Nest.Tests.Unit/Core/Warmers/PutWarmerRequestTests.cs b/src/Tests/Nest.Tests.Unit/Core/Warmers/PutWarmerRequestTests.cs index 98970373b74..abb62fff49b 100644 --- a/src/Tests/Nest.Tests.Unit/Core/Warmers/PutWarmerRequestTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/Warmers/PutWarmerRequestTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Elasticsearch.Net; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -26,7 +27,7 @@ public void PathWithType() .Search(s => s)); Assert.NotNull(result, "PutWarmer result should not be null"); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/nest_test_data/elasticsearchprojects/_warmer/warmer_pathwithtype", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } @@ -39,7 +40,7 @@ public void PathWithDynamic() .Search(s => s)); Assert.NotNull(result, "PutWarmer result should not be null"); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/my_index/_warmer/warmer_pathwithdynamic", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } @@ -52,7 +53,7 @@ public void PathWithAllIndices() .Search(s => s)); Assert.NotNull(result, "PutWarmer result should not be null"); var status = result.ConnectionStatus; - StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.Result); + StringAssert.Contains("USING NEST IN MEMORY CONNECTION", result.ConnectionStatus.ResponseRaw.Utf8String()); StringAssert.EndsWith("/_all/_warmer/warmer_pathwithallindices", status.RequestUrl); StringAssert.AreEqualIgnoringCase("PUT", status.RequestMethod); } From af836aa523dff3150ddd0d8eeb189cbcff4afb8d Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 19 Mar 2014 11:22:55 +0100 Subject: [PATCH 05/12] Fixed elasticsearch.net unit tests and cleaned them up slightly --- dep/repositories.config | 1 + src/Elasticsearch.Net/Connection/Transport.cs | 2 +- .../Connection/ConcurrencyTests.cs | 24 +- .../Connection/RetryTests.cs | 75 +++--- .../Connection/SkipDeadNodesTests.cs | 232 +++++++++--------- .../Connection/SniffingConnectionPoolTests.cs | 33 +-- .../StaticConnectionPoolRetryTests.cs | 56 +---- .../Elasticsearch.Net.Tests.Unit.csproj | 2 + .../Stubs/FakeCalls.cs | 37 +++ .../Stubs/FakeResponse.cs | 31 +++ 10 files changed, 261 insertions(+), 232 deletions(-) create mode 100644 src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs create mode 100644 src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs diff --git a/dep/repositories.config b/dep/repositories.config index 2cb419a2515..f7a4a6fe43b 100644 --- a/dep/repositories.config +++ b/dep/repositories.config @@ -12,6 +12,7 @@ + diff --git a/src/Elasticsearch.Net/Connection/Transport.cs b/src/Elasticsearch.Net/Connection/Transport.cs index e33e80836a7..32d41af2b2d 100644 --- a/src/Elasticsearch.Net/Connection/Transport.cs +++ b/src/Elasticsearch.Net/Connection/Transport.cs @@ -146,7 +146,7 @@ private ElasticsearchResponse _doRequest(string method, Uri uri, byte[] po case "head": return this._connection.HeadSync(uri); case "get": - return this._connection.GetSync(uri, deserializationState); + return this._connection.GetSync(uri, null); } throw new Exception("Unknown HTTP method " + method); } diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs index fe27edd3546..380b9ebe3be 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/ConcurrencyTests.cs @@ -43,11 +43,6 @@ public ConcurrencyTests() .MaximumRetries(5); } - private void ProvideTransport(AutoFake fake) - { - var param = new TypedParameter(typeof(IDateTimeProvider), null); - fake.Provide(param); - } [Test] public void CallInfo40000TimesOnMultipleThreads() { @@ -56,14 +51,21 @@ public void CallInfo40000TimesOnMultipleThreads() //set up connection configuration that holds a connection pool //with '_uris' (see the constructor) fake.Provide(_config); - //prove a real HttpTransport with its unspecified dependencies + //we want to use our special concurrencytestconnection + //this randonly throws on any node but 9200 and sniffing will represent a different + //view of the cluster each time but always holding node 9200 + fake.Provide(new ConcurrencyTestConnection(this._config)); + //prove a real Transport with its unspecified dependencies //as fakes - - var connection = fake.Provide(new ConcurrencyTestConnection(this._config)); - this.ProvideTransport(fake); + FakeCalls.ProvideDefaultTransport(fake); + //create a real ElasticsearchClient with it unspecified dependencies as fakes var client = fake.Resolve(); int seen = 0; + + //We'll call Info() 10.000 times on 4 threads + //This should not throw any exceptions even if connections sometime fail at a node level + //because node 9200 is always up and running Assert.DoesNotThrow(()=> { Action a = () => @@ -88,6 +90,10 @@ public void CallInfo40000TimesOnMultipleThreads() thread4.Join(); }); + + //we should have seen 40.000 increments + //Sadly we can't use FakeItEasy's to ensure get is called 40.000 times + //because it internally uses fixed arrays that will overflow :) seen.Should().Be(40000); } } diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs index 6beb6e58094..c27acd5abd7 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs @@ -8,6 +8,7 @@ using Elasticsearch.Net.Connection; using Elasticsearch.Net.Exceptions; using Elasticsearch.Net.Providers; +using Elasticsearch.Net.Tests.Unit.Stubs; using FakeItEasy; using FluentAssertions; using NUnit.Framework; @@ -19,26 +20,20 @@ public class RetryTests { private static readonly int _retries = 4; - //we do not pass a Uri or IConnectionPool so this config //defaults to SingleNodeConnectionPool() private readonly ConnectionConfiguration _connectionConfig = new ConnectionConfiguration() .MaximumRetries(_retries); - private void ProvideTransport(AutoFake fake) - { - var param = new TypedParameter(typeof(IDateTimeProvider), null); - fake.Provide(param); - } - [Test] public void ThrowsOutOfNodesException_AndRetriesTheSpecifiedTimes() { using (var fake = new AutoFake(callsDoNothing: true)) { fake.Provide(_connectionConfig); - this.ProvideTransport(fake); - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + FakeCalls.ProvideDefaultTransport(fake); + + var getCall = FakeCalls.GetSyncCall(fake); getCall.Throws(); var client = fake.Resolve(); @@ -57,10 +52,12 @@ public async void ThrowsOutOfNodesException_AndRetriesTheSpecifiedTimes_Async() using (var fake = new AutoFake(callsDoNothing: true)) { fake.Provide(_connectionConfig); - this.ProvideTransport(fake); - var getCall = A.CallTo(() => fake.Resolve().Get(A._)); - Func badTask = () => { throw new Exception(); }; - var t = new Task(badTask); + FakeCalls.ProvideDefaultTransport(fake); + var getCall = FakeCalls.GetCall(fake); + + //return a started task that throws + Func> badTask = () => { throw new Exception(); }; + var t = new Task>(badTask); t.Start(); getCall.Returns(t); @@ -85,11 +82,11 @@ public void ShouldNotRetryOn400() { using (var fake = new AutoFake(callsDoNothing: true)) { - var settings = fake.Provide(_connectionConfig); - this.ProvideTransport(fake); - - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); - getCall.Returns(ElasticsearchResponse.Create(settings, 400, "GET", "/", null, null)); + fake.Provide(_connectionConfig); + FakeCalls.ProvideDefaultTransport(fake); + + var getCall = FakeCalls.GetSyncCall(fake); + getCall.Returns(FakeResponse.Any(_connectionConfig, 400)); var client = fake.Resolve(); @@ -103,11 +100,11 @@ public async void ShouldNotRetryOn400_Async() { using (var fake = new AutoFake(callsDoNothing: true)) { - var settings = fake.Provide(_connectionConfig); - this.ProvideTransport(fake); + fake.Provide(_connectionConfig); + FakeCalls.ProvideDefaultTransport(fake); - var getCall = A.CallTo(() => fake.Resolve().Get(A._)); - getCall.Returns(Task.FromResult(ElasticsearchResponse.Create(settings, 400, "GET", "/", null, null))); + var getCall = FakeCalls.GetCall(fake); + getCall.Returns(Task.FromResult(FakeResponse.Any(_connectionConfig, 400))); var client = fake.Resolve(); @@ -121,11 +118,11 @@ public void ShouldNotRetryOn500() { using (var fake = new AutoFake(callsDoNothing: true)) { - var settings = fake.Provide(_connectionConfig); - this.ProvideTransport(fake); - - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); - getCall.Returns(ElasticsearchResponse.Create(settings, 500, "GET", "/", null, null)); + fake.Provide(_connectionConfig); + FakeCalls.ProvideDefaultTransport(fake); + + var getCall = FakeCalls.GetSyncCall(fake); + getCall.Returns(FakeResponse.Any(_connectionConfig, 400)); var client = fake.Resolve(); @@ -140,11 +137,11 @@ public void ShouldNotRetryOn201() { using (var fake = new AutoFake(callsDoNothing: true)) { - var settings = fake.Provide(_connectionConfig); - this.ProvideTransport(fake); + fake.Provide(_connectionConfig); + FakeCalls.ProvideDefaultTransport(fake); - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); - getCall.Returns(ElasticsearchResponse.Create(settings, 201, "GET", "/", null, null)); + var getCall = FakeCalls.GetSyncCall(fake); + getCall.Returns(FakeResponse.Any(_connectionConfig, 201)); var client = fake.Resolve(); @@ -159,11 +156,11 @@ public void ShouldRetryOn503() { using (var fake = new AutoFake(callsDoNothing: true)) { - var settings = fake.Provide(_connectionConfig); - this.ProvideTransport(fake); + fake.Provide(_connectionConfig); + FakeCalls.ProvideDefaultTransport(fake); - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); - getCall.Returns(ElasticsearchResponse.Create(settings, 503, "GET", "/", null, null)); + var getCall = FakeCalls.GetSyncCall(fake); + getCall.Returns(FakeResponse.Bad(_connectionConfig)); var client = fake.Resolve(); @@ -178,11 +175,11 @@ public async void ShouldRetryOn503_Async() { using (var fake = new AutoFake(callsDoNothing: true)) { - var settings = fake.Provide(_connectionConfig); - this.ProvideTransport(fake); + fake.Provide(_connectionConfig); + FakeCalls.ProvideDefaultTransport(fake); - var getCall = A.CallTo(() => fake.Resolve().Get(A._)); - getCall.Returns(Task.FromResult(ElasticsearchResponse.Create(settings, 503, "GET", "/", null, null))); + var getCall = FakeCalls.GetCall(fake); + getCall.Returns(Task.FromResult(FakeResponse.Bad(_connectionConfig))); var client = fake.Resolve(); try diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs index b7b9740ac24..37bf67ead06 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SkipDeadNodesTests.cs @@ -24,60 +24,34 @@ namespace Elasticsearch.Net.Tests.Unit.Connection public class SkipDeadNodesTests { [Test] - public void DeadNodesAreNotVisited() + public void DeadNodesAreNotVisited_AndPingedAppropiately() { using (var fake = new AutoFake()) { - var now = DateTime.UtcNow; - var dateTimeProvider = fake.Resolve(); - var nowCall = A.CallTo(()=>dateTimeProvider.Now()); - nowCall.ReturnsNextFromSequence( - DateTime.UtcNow, //info 1 - DateTime.UtcNow, //info 2 - DateTime.UtcNow, //info 2 retry - DateTime.UtcNow, //info 3 - DateTime.UtcNow, //info 4 - DateTime.UtcNow, //info 5 pass over node 3 - DateTime.UtcNow, //info 5 - DateTime.UtcNow, //info 6 - DateTime.UtcNow.AddMinutes(2), //info 7 - DateTime.UtcNow.AddMinutes(2), //info 8 - DateTime.UtcNow.AddMinutes(2) //info 9 - ); - A.CallTo(()=>dateTimeProvider.AliveTime(A._, A._)) - .Returns(new DateTime()); - A.CallTo(() => dateTimeProvider.DeadTime(A._, A._, A._, A._)) - .Returns(DateTime.UtcNow.AddMinutes(1)); - //make sure the transport layer uses a different datetimeprovider - fake.Provide(new DateTimeProvider()); - var connectionPool = new StaticConnectionPool(new[] - { - new Uri("http://localhost:9204"), - new Uri("http://localhost:9203"), - new Uri("http://localhost:9202"), - new Uri("http://localhost:9201") - }, randomizeOnStartup: false, dateTimeProvider: dateTimeProvider); - var config = new ConnectionConfiguration(connectionPool); - fake.Provide(config); - fake.Provide(fake.Resolve()); - var connection = fake.Resolve(); + var dateTimeProvider = ProvideDateTimeProvider(fake); + var config = ProvideConfiguration(dateTimeProvider); + var connection = ProvideConnection(fake, config); - var seenNodes = new List(); - var getCall = A.CallTo(() => connection.GetSync(A._, A._)); + var getCall = FakeCalls.GetSyncCall(fake); + var ok = FakeResponse.Ok(config); + var bad = FakeResponse.Bad(config); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 1 - 9204 - ElasticsearchResponse.Create(config, 503, "GET", "/", null), //info 2 - 9203 DEAD - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 2 retry - 9202 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 3 - 9201 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 4 - 9204 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 5 - 9202 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 6 - 9201 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 7 - 9204 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 8 - 9203 (Now > Timeout) - ElasticsearchResponse.Create(config, 200, "GET", "/", null) //info 9 - 9202 + ok, //info 1 - 9204 + bad, //info 2 - 9203 DEAD + ok, //info 2 retry - 9202 + ok, //info 3 - 9201 + ok, //info 4 - 9204 + ok, //info 5 - 9202 + ok, //info 6 - 9201 + ok, //info 7 - 9204 + ok, //info 8 - 9203 (Now > Timeout) + ok //info 9 - 9202 ); - getCall.Invokes((Uri u) => seenNodes.Add(u)); - var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); + + var seenNodes = new List(); + getCall.Invokes((Uri u, object o) => seenNodes.Add(u)); + + var pingCall = FakeCalls.Ping(fake); pingCall.Returns(true); var client1 = fake.Resolve(); @@ -91,82 +65,45 @@ public void DeadNodesAreNotVisited() client1.Info(); //info call 8 client1.Info(); //info call 9 - seenNodes.Should().NotBeEmpty().And.HaveCount(10); - seenNodes[0].Port.Should().Be(9204); - seenNodes[1].Port.Should().Be(9203); - //after sniff - seenNodes[2].Port.Should().Be(9202); - seenNodes[3].Port.Should().Be(9201); - seenNodes[4].Port.Should().Be(9204); - seenNodes[5].Port.Should().Be(9202); - seenNodes[6].Port.Should().Be(9201); - seenNodes[7].Port.Should().Be(9204); - seenNodes[8].Port.Should().Be(9203); + AssertSeenNodesAreInExpectedOrder(seenNodes); //4 nodes first time usage + 1 time after the first time 9203 came back to live pingCall.MustHaveHappened(Repeated.Exactly.Times(5)); - //var nowCall = A.CallTo(() => fake.Resolve().Sniff(A._, A._)); } } - + + [Test] - public async void DeadNodesAreNotVisited_Async() + public async void DeadNodesAreNotVisited_AndPingedAppropiately_Async() { using (var fake = new AutoFake()) { - var now = DateTime.UtcNow; - var dateTimeProvider = fake.Resolve(); - var nowCall = A.CallTo(()=>dateTimeProvider.Now()); - nowCall.ReturnsNextFromSequence( - DateTime.UtcNow, //info 1 - DateTime.UtcNow, //info 2 - DateTime.UtcNow, //info 2 retry - DateTime.UtcNow, //info 3 - DateTime.UtcNow, //info 4 - DateTime.UtcNow, //info 5 pass over node 3 - DateTime.UtcNow, //info 5 - DateTime.UtcNow, //info 6 - DateTime.UtcNow.AddMinutes(2), //info 7 - DateTime.UtcNow.AddMinutes(2), //info 8 - DateTime.UtcNow.AddMinutes(2) //info 9 - ); - A.CallTo(()=>dateTimeProvider.AliveTime(A._, A._)) - .Returns(new DateTime()); - A.CallTo(() => dateTimeProvider.DeadTime(A._, A._, A._, A._)) - .Returns(DateTime.UtcNow.AddMinutes(1)); - //make sure the transport layer uses a different datetimeprovider - fake.Provide(new DateTimeProvider()); - var connectionPool = new StaticConnectionPool(new[] - { - new Uri("http://localhost:9204"), - new Uri("http://localhost:9203"), - new Uri("http://localhost:9202"), - new Uri("http://localhost:9201") - }, randomizeOnStartup: false, dateTimeProvider: dateTimeProvider); - var config = new ConnectionConfiguration(connectionPool); - fake.Provide(config); - fake.Provide(fake.Resolve()); - var connection = fake.Resolve(); - - var ok = Task.FromResult(ElasticsearchResponse.Create(config, 200, "GET", "/", null)); - var bad = Task.FromResult(ElasticsearchResponse.Create(config, 503, "GET", "/", null)); - - var seenNodes = new List(); - var getCall = A.CallTo(() => connection.Get(A._, A._)); + var dateTimeProvider = ProvideDateTimeProvider(fake); + var config = ProvideConfiguration(dateTimeProvider); + var connection = ProvideConnection(fake, config); + + var getCall = FakeCalls.GetCall(fake); + var ok = Task.FromResult(FakeResponse.Ok(config)); + var bad = Task.FromResult(FakeResponse.Bad(config)); getCall.ReturnsNextFromSequence( - ok, //info 1 - 9204 + ok, //info 1 - 9204 bad, //info 2 - 9203 DEAD - ok, //info 2 retry - 9202 - ok, //info 3 - 9201 - ok, //info 4 - 9204 - ok, //info 5 - 9202 - ok, //info 6 - 9201 + ok, //info 2 retry - 9202 + ok, //info 3 - 9201 + ok, //info 4 - 9204 + ok, //info 5 - 9202 + ok, //info 6 - 9201 ok, //info 7 - 9204 - ok, //info 8 - 9203 (Now > Timeout) - ok //info 9 - 9202 + ok, //info 8 - 9203 (Now > Timeout) + ok //info 9 - 9202 ); - getCall.Invokes((Uri u) => seenNodes.Add(u)); + + var seenNodes = new List(); + getCall.Invokes((Uri u, object o) => seenNodes.Add(u)); + + var pingCall = FakeCalls.Ping(fake); + pingCall.Returns(true); var client1 = fake.Resolve(); await client1.InfoAsync(); //info call 1 @@ -179,20 +116,71 @@ public async void DeadNodesAreNotVisited_Async() await client1.InfoAsync(); //info call 8 await client1.InfoAsync(); //info call 9 - seenNodes.Should().NotBeEmpty().And.HaveCount(10); - seenNodes[0].Port.Should().Be(9204); - seenNodes[1].Port.Should().Be(9203); - //after sniff - seenNodes[2].Port.Should().Be(9202); - seenNodes[3].Port.Should().Be(9201); - seenNodes[4].Port.Should().Be(9204); - seenNodes[5].Port.Should().Be(9202); - seenNodes[6].Port.Should().Be(9201); - seenNodes[7].Port.Should().Be(9204); - seenNodes[8].Port.Should().Be(9203); + AssertSeenNodesAreInExpectedOrder(seenNodes); - //var nowCall = A.CallTo(() => fake.Resolve().Sniff(A._, A._)); + //4 nodes first time usage + 1 time after the first time 9203 came back to live + pingCall.MustHaveHappened(Repeated.Exactly.Times(5)); } } + + private static IConnection ProvideConnection(AutoFake fake, ConnectionConfiguration config) + { + fake.Provide(config); + fake.Provide(fake.Resolve()); + var connection = fake.Resolve(); + return connection; + } + private static ConnectionConfiguration ProvideConfiguration(IDateTimeProvider dateTimeProvider) + { + var connectionPool = new StaticConnectionPool(new[] + { + new Uri("http://localhost:9204"), + new Uri("http://localhost:9203"), + new Uri("http://localhost:9202"), + new Uri("http://localhost:9201") + }, randomizeOnStartup: false, dateTimeProvider: dateTimeProvider); + var config = new ConnectionConfiguration(connectionPool); + return config; + } + private static IDateTimeProvider ProvideDateTimeProvider(AutoFake fake) + { + var now = DateTime.UtcNow; + var dateTimeProvider = fake.Resolve(); + var nowCall = A.CallTo(() => dateTimeProvider.Now()); + nowCall.ReturnsNextFromSequence( + now, //info 1 + now, //info 2 + now, //info 2 retry + now, //info 3 + now, //info 4 + now, //info 5 pass over node 3 + now, //info 5 + now, //info 6 + now.AddMinutes(2), //info 7 + now.AddMinutes(2), //info 8 + now.AddMinutes(2) //info 9 + ); + A.CallTo(() => dateTimeProvider.AliveTime(A._, A._)).Returns(new DateTime()); + //dead time will return a fixed timeout of 1 minute + A.CallTo(() => dateTimeProvider.DeadTime(A._, A._, A._, A._)) + .Returns(DateTime.UtcNow.AddMinutes(1)); + //make sure the transport layer uses a different datetimeprovider + fake.Provide(new DateTimeProvider()); + return dateTimeProvider; + } + private static void AssertSeenNodesAreInExpectedOrder(List seenNodes) + { + seenNodes.Should().NotBeEmpty().And.HaveCount(10); + seenNodes[0].Port.Should().Be(9204); + seenNodes[1].Port.Should().Be(9203); + //after sniff + seenNodes[2].Port.Should().Be(9202); + seenNodes[3].Port.Should().Be(9201); + seenNodes[4].Port.Should().Be(9204); + seenNodes[5].Port.Should().Be(9202); + seenNodes[6].Port.Should().Be(9201); + seenNodes[7].Port.Should().Be(9204); + seenNodes[8].Port.Should().Be(9203); + } } } diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs index 1f724429b73..9b55308878a 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs @@ -9,7 +9,7 @@ using Elasticsearch.Net.ConnectionPool; using Elasticsearch.Net.Exceptions; using Elasticsearch.Net.Providers; -using Elasticsearch.Net.Tests.Unit.ConnectionA; +using Elasticsearch.Net.Tests.Unit.Stubs; using FakeItEasy; using FakeItEasy.Configuration; using FluentAssertions; @@ -69,7 +69,7 @@ public void SniffIsCalledAfterItHasGoneOutOfDate() var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); - var getCall = FakeResponse.GetSyncCall(fake); + var getCall = FakeCalls.GetSyncCall(fake); getCall.Returns(FakeResponse.Ok(config)); var client1 = fake.Resolve(); @@ -109,7 +109,7 @@ public void SniffIsCalledAfterItHasGoneOutOfDate_NotWhenItSeesA503() fake.Provide(fake.Resolve()); var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); - var getCall = FakeResponse.GetSyncCall(fake); + var getCall = FakeCalls.GetSyncCall(fake); getCall.ReturnsNextFromSequence( FakeResponse.Ok(config), //info 1 FakeResponse.Ok(config), //info 2 @@ -149,7 +149,7 @@ public void SniffOnConnectionFaultCausesSniffOn503() fake.Provide(fake.Resolve()); var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); - var getCall = FakeResponse.GetSyncCall(fake); + var getCall = FakeCalls.GetSyncCall(fake); getCall.ReturnsNextFromSequence( FakeResponse.Ok(config), //info 1 @@ -189,7 +189,6 @@ public void HostsReturnedBySniffAreVisited() var config = new ConnectionConfiguration(connectionPool) .SniffOnConnectionFault(); fake.Provide(config); - fake.Provide(fake.Resolve()); var connection = fake.Resolve(); var sniffCall = A.CallTo(() => connection.Sniff(A._)); sniffCall.Returns(new List() @@ -201,21 +200,23 @@ public void HostsReturnedBySniffAreVisited() }); var seenNodes = new List(); + //var getCall = FakeResponse.GetSyncCall(fake); var getCall = A.CallTo(() => connection.GetSync(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 1 - ElasticsearchResponse.Create(config, 503, "GET", "/", null), //info 2 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 2 retry - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 3 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 4 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 5 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 6 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 7 - ElasticsearchResponse.Create(config, 200, "GET", "/", null), //info 8 - ElasticsearchResponse.Create(config, 200, "GET", "/", null) //info 9 + FakeResponse.Ok(config), //info 1 + FakeResponse.Bad(config), //info 2 + FakeResponse.Ok(config), //info 2 retry + FakeResponse.Ok(config), //info 3 + FakeResponse.Ok(config), //info 4 + FakeResponse.Ok(config), //info 5 + FakeResponse.Ok(config), //info 6 + FakeResponse.Ok(config), //info 7 + FakeResponse.Ok(config), //info 8 + FakeResponse.Ok(config) //info 9 ); - getCall.Invokes((Uri u) => seenNodes.Add(u)); + getCall.Invokes((Uri u, object o) => seenNodes.Add(u)); + fake.Provide(fake.Resolve()); var client1 = fake.Resolve(); client1.Info(); //info call 1 client1.Info(); //info call 2 diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs index cd64ab86822..648ff90df12 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs @@ -4,7 +4,6 @@ using System.Net; using System.Runtime.InteropServices; using System.Text; -using System.Threading.Tasks; using Autofac; using Autofac.Core.Activators.Reflection; using Autofac.Extras.FakeItEasy; @@ -14,44 +13,11 @@ using Elasticsearch.Net.Providers; using Elasticsearch.Net.Tests.Unit.Stubs; using FakeItEasy; -using FakeItEasy.Configuration; using FluentAssertions; using NUnit.Framework; -namespace Elasticsearch.Net.Tests.Unit.ConnectionA +namespace Elasticsearch.Net.Tests.Unit.Connection { - public static class FakeResponse - { - public static ElasticsearchResponse Ok( - IConnectionConfigurationValues config, - string method = "GET", - string path = "/") - { - return ElasticsearchResponse.Create(config, 200, method, path, null); - } - - public static ElasticsearchResponse Bad( - IConnectionConfigurationValues config, - string method = "GET", - string path = "/") - { - return ElasticsearchResponse.Create(config, 503, method, path, null); - } - - public static IReturnValueArgumentValidationConfiguration> GetSyncCall(AutoFake fake) - { - return A.CallTo(() => - fake.Resolve().GetSync(A._, A._)); - } - public static IReturnValueArgumentValidationConfiguration>> GetCall(AutoFake fake) - { - return A.CallTo(() => - fake.Resolve().Get(A._, A._)); - } - - } - - [TestFixture] public class StaticConnectionPoolRetryTests { @@ -91,9 +57,9 @@ public void ThrowsOutOfNodesException_AndRetriesTheSpecifiedTimes() //set up fake for a call on IConnection.GetSync so that it always throws //an exception - var getCall = GetSync(fake); + var getCall = FakeCalls.GetSyncCall(fake); getCall.Throws(); - var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); + var pingCall = FakeCalls.Ping(fake); pingCall.Returns(true); //create a real ElasticsearchClient with it unspecified dependencies @@ -363,18 +329,18 @@ public void IfAllButOneConnectionDiesSubsequentRequestsMustUseTheOneAliveConnect fake.Provide(config); // provide a simple fake for synchronous get - var getCall = A.CallTo(() => fake.Resolve().GetSync(A._)); + var getCall = FakeCalls.GetSyncCall(fake); //The first three tries get a 503 causing the first 3 nodes to be marked dead //all the subsequent requests should be handled by 9203 which gives a 200 4 times getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null, null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null, null) + FakeResponse.Bad(config), + FakeResponse.Bad(config), + FakeResponse.Bad(config), + FakeResponse.Ok(config), + FakeResponse.Ok(config), + FakeResponse.Ok(config), + FakeResponse.Ok(config) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj b/src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj index d108c7356fe..fb36a84acd7 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Elasticsearch.Net.Tests.Unit.csproj @@ -60,6 +60,8 @@ + + diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs new file mode 100644 index 00000000000..5f8664de41f --- /dev/null +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs @@ -0,0 +1,37 @@ +using System; +using System.Threading.Tasks; +using Autofac; +using Autofac.Extras.FakeItEasy; +using Elasticsearch.Net.Connection; +using Elasticsearch.Net.Providers; +using FakeItEasy; +using FakeItEasy.Configuration; + +namespace Elasticsearch.Net.Tests.Unit.Stubs +{ + public static class FakeCalls + { + public static IReturnValueConfiguration> GetSyncCall(AutoFake fake) + { + return A.CallTo(() => + fake.Resolve().GetSync(A._, null)); + } + public static IReturnValueArgumentValidationConfiguration>> GetCall(AutoFake fake) + { + return A.CallTo(() => + fake.Resolve().Get(A._, A._)); + } + + public static IReturnValueArgumentValidationConfiguration Ping(AutoFake fake) + { + return A.CallTo(() => fake.Resolve().Ping(A._)); + } + + public static ITransport ProvideDefaultTransport(AutoFake fake) + { + var param = new TypedParameter(typeof(IDateTimeProvider), null); + return fake.Provide(param); + } + + } +} \ No newline at end of file diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs new file mode 100644 index 00000000000..a139f6efca7 --- /dev/null +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs @@ -0,0 +1,31 @@ +using Elasticsearch.Net.Connection; + +namespace Elasticsearch.Net.Tests.Unit.Stubs +{ + public static class FakeResponse + { + public static ElasticsearchResponse Ok( + IConnectionConfigurationValues config, + string method = "GET", + string path = "/") + { + return ElasticsearchResponse.Create(config, 200, method, path, null); + } + + public static ElasticsearchResponse Bad( + IConnectionConfigurationValues config, + string method = "GET", + string path = "/") + { + return ElasticsearchResponse.Create(config, 503, method, path, null); + } + public static ElasticsearchResponse Any( + IConnectionConfigurationValues config, + int statusCode, + string method = "GET", + string path = "/") + { + return ElasticsearchResponse.Create(config, statusCode, method, path, null); + } + } +} \ No newline at end of file From 474fd3943a96aa20608956949c35acd9e8316e99 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 19 Mar 2014 13:21:52 +0100 Subject: [PATCH 06/12] rethrow properly when max retries == 0 --- .../ElasticsearchHttpClient.cs | 51 ++++++----- .../ThriftConnection.cs | 90 +++++++++++-------- .../Connection/ConnectionConfiguration.cs | 16 +++- .../Connection/HttpConnection.cs | 2 +- .../Connection/IConnectionConfiguration.cs | 7 ++ .../IConnectionConfigurationValues.cs | 1 + .../Connection/InMemoryConnection.cs | 20 ++--- src/Elasticsearch.Net/Connection/Transport.cs | 3 + .../Domain/ElasticsearchResponse.cs | 32 +++++++ .../Properties/InternalsVisibleTo.cs | 2 +- src/Elasticsearch.sln | 24 +---- src/Nest/Domain/Responses/BaseResponse.cs | 11 ++- src/Nest/ElasticClient-IndexExists.cs | 17 +++- .../ElasticsearchJsonNetSerializer.cs | 50 +++++++++-- .../Elasticsearch.Net.Integration.Yaml.csproj | 4 - .../YamlTestsBase.cs | 1 - 16 files changed, 209 insertions(+), 122 deletions(-) diff --git a/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs b/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs index aa5c0953bc2..077c973c726 100644 --- a/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs +++ b/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.IO; using System.Linq; using System.Net.Http; using System.Text; @@ -17,11 +18,11 @@ public ElasticsearchHttpClient(IConnectionConfigurationValues settings) _settings = settings; } - public ElasticsearchResponse DoSyncRequest(string method, Uri uri, byte[] data = null) + public ElasticsearchResponse DoSyncRequest(string method, Uri uri, byte[] data = null) { var client = new System.Net.Http.HttpClient(); HttpResponseMessage response = null; - byte[] result = null; + Stream result = null; HttpContent content = null; if (data != null) content = new ByteArrayContent(data); @@ -29,92 +30,90 @@ public ElasticsearchResponse DoSyncRequest(string method, Uri uri, byte[] data = { case "head": response = client.SendAsync(new HttpRequestMessage(HttpMethod.Head, uri) ).Result; - result = response.Content.ReadAsByteArrayAsync().Result; break; case "delete": response = client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, uri) { Content = content }).Result; - result = response.Content.ReadAsByteArrayAsync().Result; break; case "put": response = client.PutAsync(uri, content).Result; - result = response.Content.ReadAsByteArrayAsync().Result; break; case "post": response = client.PostAsync(uri, content).Result; - result = response.Content.ReadAsByteArrayAsync().Result; break; case "get": response = client.GetAsync(uri).Result; - result = response.Content.ReadAsByteArrayAsync().Result; break; } - return ElasticsearchResponse.Create(this._settings, (int)response.StatusCode, method, uri.ToString(), data, result); + if (response == null) + return ElasticsearchResponse.CreateError(_settings, null, method, uri.ToString(), data); + result = response.Content.ReadAsStreamAsync().Result; + return ElasticsearchResponse.Create(this._settings, (int)response.StatusCode, method, uri.ToString(), data, result); } - public Task Get(Uri uri) + public Task> Get(Uri uri, object deserializeState = null) { throw new NotImplementedException(); } - public ElasticsearchResponse GetSync(Uri uri) + public ElasticsearchResponse GetSync(Uri uri, object deserializeState = null) { - return this.DoSyncRequest("get", uri); + return this.DoSyncRequest("get", uri); } - public Task Head(Uri uri) + public Task> Head(Uri uri) { throw new NotImplementedException(); } - public ElasticsearchResponse HeadSync(Uri uri) + public ElasticsearchResponse HeadSync(Uri uri) { - return this.DoSyncRequest("head", uri); + return this.DoSyncRequest("head", uri); throw new NotImplementedException(); } - public Task Post(Uri uri, byte[] data) + public Task> Post(Uri uri, byte[] data, object deserializeState = null) { throw new NotImplementedException(); } - public ElasticsearchResponse PostSync(Uri uri, byte[] data) + public ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializeState = null) { - return this.DoSyncRequest("post", uri, data); + return this.DoSyncRequest("post", uri, data); throw new NotImplementedException(); } - public Task Put(Uri uri, byte[] data) + public Task> Put(Uri uri, byte[] data, object deserializeState = null) { throw new NotImplementedException(); } - public ElasticsearchResponse PutSync(Uri uri, byte[] data) + public ElasticsearchResponse PutSync(Uri uri, byte[] data, object deserializeState = null) { - return this.DoSyncRequest("put", uri, data); + return this.DoSyncRequest("put", uri, data); throw new NotImplementedException(); } - public Task Delete(Uri uri) + public Task> Delete(Uri uri, object deserializeState = null) { throw new NotImplementedException(); } - public ElasticsearchResponse DeleteSync(Uri uri) + public ElasticsearchResponse DeleteSync(Uri uri, object deserializeState = null) { - return this.DoSyncRequest("delete", uri); + return this.DoSyncRequest("delete", uri); throw new NotImplementedException(); } - public Task Delete(Uri uri, byte[] data) + public Task> Delete(Uri uri, byte[] data, object deserializeState = null) { throw new NotImplementedException(); } - public ElasticsearchResponse DeleteSync(Uri uri, byte[] data) + public ElasticsearchResponse DeleteSync(Uri uri, byte[] data, object deserializeState = null) { - return this.DoSyncRequest("delete", uri, data); + return this.DoSyncRequest("delete", uri, data); throw new NotImplementedException(); } diff --git a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs index 6469a1e9790..02dbe37a9f0 100644 --- a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs +++ b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Configuration; using System.IO; using System.Security.Cryptography.X509Certificates; using System.Text; @@ -44,7 +45,7 @@ public ThriftConnection(IConnectionConfigurationValues connectionSettings) #region IConnection Members - public Task Get(Uri uri) + public Task> Get(Uri uri, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.GET; @@ -52,13 +53,13 @@ public Task Get(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); }); } - public Task Head(Uri uri) + public Task> Head(Uri uri) { var restRequest = new RestRequest(); restRequest.Method = Method.HEAD; @@ -66,13 +67,13 @@ public Task Head(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return Task.Factory.StartNew(()=> + return Task.Factory.StartNew>(()=> { - return this.Execute(restRequest); + return this.Execute(restRequest, null); }); } - public ElasticsearchResponse GetSync(Uri uri) + public ElasticsearchResponse GetSync(Uri uri, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.GET; @@ -80,10 +81,10 @@ public ElasticsearchResponse GetSync(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); } - public ElasticsearchResponse HeadSync(Uri uri) + public ElasticsearchResponse HeadSync(Uri uri) { var restRequest = new RestRequest(); restRequest.Method = Method.HEAD; @@ -91,10 +92,10 @@ public ElasticsearchResponse HeadSync(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest); + return this.Execute(restRequest, null); } - public Task Post(Uri uri, byte[] data) + public Task> Post(Uri uri, byte[] data, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.POST; @@ -103,12 +104,12 @@ public Task Post(Uri uri, byte[] data) restRequest.Body = data; restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); }); } - public Task Put(Uri uri, byte[] data) + public Task> Put(Uri uri, byte[] data, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.PUT; @@ -117,12 +118,12 @@ public Task Put(Uri uri, byte[] data) restRequest.Body = data; restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); }); } - public Task Delete(Uri uri, byte[] data) + public Task> Delete(Uri uri, byte[] data, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.DELETE; @@ -131,13 +132,13 @@ public Task Delete(Uri uri, byte[] data) restRequest.Body = data; restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); }); } - public ElasticsearchResponse PostSync(Uri uri, byte[] data) + public ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.POST; @@ -146,9 +147,9 @@ public ElasticsearchResponse PostSync(Uri uri, byte[] data) restRequest.Body = data; restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); } - public ElasticsearchResponse PutSync(Uri uri, byte[] data) + public ElasticsearchResponse PutSync(Uri uri, byte[] data, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.PUT; @@ -157,9 +158,9 @@ public ElasticsearchResponse PutSync(Uri uri, byte[] data) restRequest.Body = data; restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); } - public Task Delete(Uri uri) + public Task> Delete(Uri uri, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.DELETE; @@ -167,13 +168,13 @@ public Task Delete(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return Task.Factory.StartNew(() => + return Task.Factory.StartNew>(() => { - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); }); } - public ElasticsearchResponse DeleteSync(Uri uri) + public ElasticsearchResponse DeleteSync(Uri uri, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.DELETE; @@ -181,9 +182,9 @@ public ElasticsearchResponse DeleteSync(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); } - public ElasticsearchResponse DeleteSync(Uri uri, byte[] data) + public ElasticsearchResponse DeleteSync(Uri uri, byte[] data, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.DELETE; @@ -192,7 +193,7 @@ public ElasticsearchResponse DeleteSync(Uri uri, byte[] data) restRequest.Body = data; restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest); + return this.Execute(restRequest, deserializationState); } public bool Ping(Uri uri) @@ -203,7 +204,7 @@ public bool Ping(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - var r = this.Execute(restRequest); + var r = this.Execute(restRequest, null); //TODO VoidResponse return r.Success; } @@ -215,10 +216,10 @@ public IList Sniff(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - var r = this.Execute(restRequest); + var r = this.Execute(restRequest, null); using (var memoryStream = new MemoryStream(r.Response)) { - return Sniffer.FromStream(memoryStream, this._connectionSettings.Serializer); + return Sniffer.FromStream(r, memoryStream, this._connectionSettings.Serializer); } } @@ -269,7 +270,7 @@ protected virtual void Dispose(bool disposing) - private ElasticsearchResponse Execute(RestRequest restRequest) + private ElasticsearchResponse Execute(RestRequest restRequest, object deserializationState) { //RestResponse result = GetClient().execute(restRequest); // @@ -279,7 +280,7 @@ private ElasticsearchResponse Execute(RestRequest restRequest) if (!this._resourceLock.WaitOne(this._timeout)) { var m = "Could not start the thrift operation before the timeout of " + this._timeout + "ms completed while waiting for the semaphore"; - return ElasticsearchResponse.CreateError(this._connectionSettings, new TimeoutException(m), method, path, requestData); + return ElasticsearchResponse.CreateError(this._connectionSettings, new TimeoutException(m), method, path, requestData); } try { @@ -287,7 +288,7 @@ private ElasticsearchResponse Execute(RestRequest restRequest) if (!this._clients.TryDequeue(out client)) { var m = string.Format("Could dequeue a thrift client from internal socket pool of size {0}", this._poolSize); - var status = ElasticsearchResponse.CreateError(this._connectionSettings, new Exception(m), method, path, requestData); + var status = ElasticsearchResponse.CreateError(this._connectionSettings, new Exception(m), method, path, requestData); return status; } try @@ -297,11 +298,22 @@ private ElasticsearchResponse Execute(RestRequest restRequest) var result = client.execute(restRequest); if (result.Status == Status.OK || result.Status == Status.CREATED || result.Status == Status.ACCEPTED) - return ElasticsearchResponse.Create(this._connectionSettings, (int)result.Status, method, path, requestData, result.Body); + { + var response = ElasticsearchResponse.Create(this._connectionSettings, (int)result.Status, method, path, requestData); + using (var ms = new MemoryStream(result.Body)) + { + response.Response = this._connectionSettings.Serializer.Deserialize(response, ms, deserializationState); + if (this._connectionSettings.KeepRawResponse) + { + response.ResponseRaw = result.Body; + } + return response; + }; + } else { var connectionException = new ConnectionException((int)result.Status); - return ElasticsearchResponse.CreateError(this._connectionSettings, connectionException, method, path, requestData); + return ElasticsearchResponse.CreateError(this._connectionSettings, connectionException, method, path, requestData); } } catch @@ -317,7 +329,7 @@ private ElasticsearchResponse Execute(RestRequest restRequest) } catch (Exception e) { - return ElasticsearchResponse.CreateError(this._connectionSettings, e, method, path, requestData); + return ElasticsearchResponse.CreateError(this._connectionSettings, e, method, path, requestData); } finally { diff --git a/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs b/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs index 0f49e827386..808f21c5544 100644 --- a/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs +++ b/src/Elasticsearch.Net/Connection/ConnectionConfiguration.cs @@ -48,12 +48,15 @@ public class ConnectionConfiguration : IConnectionConfigurationValues private string _proxyAddress; string IConnectionConfigurationValues.ProxyAddress { get{ return _proxyAddress; } } + private bool _usePrettyResponses; + bool IConnectionConfigurationValues.UsesPrettyResponses { get{ return _usePrettyResponses; } } + private bool _keepRawResponse; + bool IConnectionConfigurationValues.KeepRawResponse { get{ return _keepRawResponse; } } + private int _maximumAsyncConnections; int IConnectionConfigurationValues.MaximumAsyncConnections { get{ return _maximumAsyncConnections; } } private int? _maxRetries; int? IConnectionConfigurationValues.MaxRetries { get{ return _maxRetries; } } - private bool _usePrettyResponses; - bool IConnectionConfigurationValues.UsesPrettyResponses { get{ return _usePrettyResponses; } } private bool _sniffOnStartup; bool IConnectionConfigurationValues.SniffsOnStartup { get{ return _sniffOnStartup; } } private bool _sniffOnConectionFault; @@ -216,6 +219,15 @@ public T UsePrettyResponses(bool b = true) return (T) this; } + /// + /// Make sure the reponse bytes are always available on the ElasticsearchResponse object + /// Note: that depending on the registered serializer this may cause the respond to be read in memory first + /// + public T ExposeRawResponse(bool b = true) + { + this._keepRawResponse = b; + return (T) this; + } protected void ConnectionStatusDefaultHandler(IElasticsearchResponse status) { return; diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index dcb76fdff86..8794fa4d33d 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -225,7 +225,7 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebReques using (var memoryStream = new MemoryStream()) { Stream s = responseStream; - if(_ConnectionSettings.UsesPrettyResponses) //TODO different setting + if(_ConnectionSettings.KeepRawResponse) { responseStream.CopyTo(memoryStream); //use memory stream for serialization instead diff --git a/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs b/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs index bf8222dc106..5f363affd5b 100644 --- a/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs +++ b/src/Elasticsearch.Net/Connection/IConnectionConfiguration.cs @@ -43,6 +43,13 @@ public interface IConnectionConfiguration where T : IConnectionConfigurat /// T UsePrettyResponses(bool b = true); + /// + /// Make sure the reponse bytes are always available on the ElasticsearchResponse object + /// Note: that depending on the registered serializer this may cause the respond to be read in memory first + /// + /// + T ExposeRawResponse(bool b = true); + /// /// Semaphore asynchronous connections automatically by giving /// it a maximum concurrent connections. Great to prevent diff --git a/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs b/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs index 6bc65fe4b47..2a5a6ed8dc1 100644 --- a/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs +++ b/src/Elasticsearch.Net/Connection/IConnectionConfigurationValues.cs @@ -24,6 +24,7 @@ public interface IConnectionConfigurationValues bool TraceEnabled { get; } bool UsesPrettyResponses { get; } + bool KeepRawResponse { get; } /// /// Sniff the cluster state immediatly on startup diff --git a/src/Elasticsearch.Net/Connection/InMemoryConnection.cs b/src/Elasticsearch.Net/Connection/InMemoryConnection.cs index 0ec844b6205..44661c58c70 100644 --- a/src/Elasticsearch.Net/Connection/InMemoryConnection.cs +++ b/src/Elasticsearch.Net/Connection/InMemoryConnection.cs @@ -1,14 +1,12 @@ using System; using System.Collections.Generic; +using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; namespace Elasticsearch.Net.Connection { - /// - /// - /// public class InMemoryConnection : HttpConnection { private readonly byte[] _fixedResultBytes = Encoding.UTF8.GetBytes("{ \"USING NEST IN MEMORY CONNECTION\" : null }"); @@ -21,25 +19,27 @@ public InMemoryConnection(IConnectionConfigurationValues settings) protected override ElasticsearchResponse DoSynchronousRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) { - return this.ReturnConnectionStatus(request, data); + return this.ReturnConnectionStatus(request, data, deserializationState); } - private ElasticsearchResponse ReturnConnectionStatus(HttpWebRequest request, byte[] data) + private ElasticsearchResponse ReturnConnectionStatus(HttpWebRequest request, byte[] data, object deserializationState = null) { var method = request.Method; var path = request.RequestUri.ToString(); - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, 200, method, path, data); - _ConnectionSettings.ConnectionStatusHandler(cs); - return cs; + using (var ms = new MemoryStream(_fixedResultBytes)) + { + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, 200, method, path, data, ms, deserializationState); + _ConnectionSettings.ConnectionStatusHandler(cs); + return cs; + } } protected override Task> DoAsyncRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) { return Task.Factory.StartNew>(() => { - var cs = this.ReturnConnectionStatus(request, data); - _ConnectionSettings.ConnectionStatusHandler(cs); + var cs = this.ReturnConnectionStatus(request, data, deserializationState); return cs; }); } diff --git a/src/Elasticsearch.Net/Connection/Transport.cs b/src/Elasticsearch.Net/Connection/Transport.cs index 32d41af2b2d..5d30ee75235 100644 --- a/src/Elasticsearch.Net/Connection/Transport.cs +++ b/src/Elasticsearch.Net/Connection/Transport.cs @@ -101,6 +101,9 @@ public ElasticsearchResponse DoRequest( } catch (Exception e) { + var maxRetries = this.GetMaximumRetries(); + if (maxRetries == 0 && retried == 0) + throw; seenError = true; return RetryRequest(method, path, data, deserializationState, retried, baseUri, initialSeed, e); } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index e21f8a5771b..ce2572c85c6 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Configuration; using System.Globalization; using System.Linq; using System.Runtime.CompilerServices; @@ -109,6 +110,37 @@ public static ElasticsearchResponse Create(IConnectionConfigurationValues set return cs; } + public static ElasticsearchResponse Create( + IConnectionConfigurationValues settings, int statusCode, string method, string path, byte[] request, Stream stream, object deserializeState = null) + { + var cs = new ElasticsearchResponse(settings, statusCode); + cs.Request = request; + cs.RequestUrl = path; + cs.RequestMethod = method; + var s = stream; + if (settings.KeepRawResponse) + { + using (var ms = new MemoryStream()) + { + stream.CopyTo(ms); + cs.ResponseRaw = ms.ToArray(); + s = ms; + } + } + var customConverter = deserializeState as Func; + if (customConverter != null) + { + var t = customConverter(cs, stream); + cs.Response = t; + } + else cs.Response = settings.Serializer.Deserialize(cs, s, deserializeState); + + + + + return cs; + } + static ElasticsearchResponse() { _printFormat = "StatusCode: {1}, {0}\tMethod: {2}, {0}\tUrl: {3}, {0}\tRequest: {4}, {0}\tResponse: {5}"; diff --git a/src/Elasticsearch.Net/Properties/InternalsVisibleTo.cs b/src/Elasticsearch.Net/Properties/InternalsVisibleTo.cs index eaed54829ca..90dd55215a9 100644 --- a/src/Elasticsearch.Net/Properties/InternalsVisibleTo.cs +++ b/src/Elasticsearch.Net/Properties/InternalsVisibleTo.cs @@ -16,7 +16,7 @@ [assembly: InternalsVisibleTo("Nest")] [assembly: InternalsVisibleTo("Nest.Tests.Unit")] [assembly: InternalsVisibleTo("Nest.Tests.Integration")] -[assembly: InternalsVisibleTo("Nest.Connection.Thrift")] +[assembly: InternalsVisibleTo("Elasticsearch.Net.Connection.Thrift")] [assembly: InternalsVisibleTo("ProtocolLoadTest")] diff --git a/src/Elasticsearch.sln b/src/Elasticsearch.sln index e12dd94f938..1543e6c1f2c 100644 --- a/src/Elasticsearch.sln +++ b/src/Elasticsearch.sln @@ -51,8 +51,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Serialization", "Serializat EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.JsonNet", "Serialization\Elasticsearch.Net.JsonNET\Elasticsearch.Net.JsonNet.csproj", "{DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.ServiceStackText", "Serialization\Elasticsearch.Net.ServiceStackText\Elasticsearch.Net.ServiceStackText.csproj", "{8052DC47-3281-4209-B0D2-45555AE30A46}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.Connection.HttpClient", "Connections\Elasticsearch.Net.Connection.HttpClient\Elasticsearch.Net.Connection.HttpClient.csproj", "{A69322FD-B874-44EF-ABE0-63F4A7B5593E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elasticsearch.Net.Tests.Unit", "Tests\Elasticsearch.Net.Tests.Unit\Elasticsearch.Net.Tests.Unit.csproj", "{C54FFD67-C452-4DC4-A47A-663ECA98A38F}" @@ -147,6 +145,7 @@ Global {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Any CPU.ActiveCfg = Release|Any CPU {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Any CPU.Build.0 = Release|Any CPU {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|Mixed Platforms.Build.0 = Release|Any CPU {704EF910-C4E7-413E-B21F-296EFE732FCF}.Release|x86.ActiveCfg = Release|Any CPU {97408393-78AC-45DF-BE6E-4C219A2E456D}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {97408393-78AC-45DF-BE6E-4C219A2E456D}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU @@ -300,25 +299,8 @@ Global {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Any CPU.ActiveCfg = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Any CPU.Build.0 = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8}.Release|x86.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.CodeGeneration|x86.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|Any CPU.ActiveCfg = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|Any CPU.Build.0 = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|Mixed Platforms.ActiveCfg = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|Mixed Platforms.Build.0 = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug - Generator|x86.ActiveCfg = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Debug|x86.ActiveCfg = Debug|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Any CPU.Build.0 = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {8052DC47-3281-4209-B0D2-45555AE30A46}.Release|x86.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.CodeGeneration|Mixed Platforms.ActiveCfg = Release|Any CPU @@ -336,6 +318,7 @@ Global {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Any CPU.ActiveCfg = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Any CPU.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {A69322FD-B874-44EF-ABE0-63F4A7B5593E}.Release|x86.ActiveCfg = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|Any CPU.ActiveCfg = Release|Any CPU {C54FFD67-C452-4DC4-A47A-663ECA98A38F}.CodeGeneration|Any CPU.Build.0 = Release|Any CPU @@ -373,6 +356,5 @@ Global {56A87048-9065-459B-826D-3DF68B409845} = {93331BEE-0AA0-47B7-B1D2-BD5BD31634D1} {04F53AA5-6346-4139-94CF-81BD8663875F} = {93331BEE-0AA0-47B7-B1D2-BD5BD31634D1} {DD71352D-0EB2-4A02-8AC4-82A17E2A71A8} = {90F48CF5-BB0B-484D-85E7-18FE3ECA3825} - {8052DC47-3281-4209-B0D2-45555AE30A46} = {90F48CF5-BB0B-484D-85E7-18FE3ECA3825} EndGlobalSection EndGlobal diff --git a/src/Nest/Domain/Responses/BaseResponse.cs b/src/Nest/Domain/Responses/BaseResponse.cs index fbcf5740432..ffe8c6d7082 100644 --- a/src/Nest/Domain/Responses/BaseResponse.cs +++ b/src/Nest/Domain/Responses/BaseResponse.cs @@ -32,12 +32,11 @@ public ElasticInferrer Infer if (this.ConnectionStatus == null) return null; - return null; //TODO REVISIT - //var settings = this.ConnectionStatus.Settings as IConnectionSettingsValues; - //if (settings == null) - // return null; - //this._infer = new ElasticInferrer(settings); - //return this._infer; + var settings = this.ConnectionStatus.Settings as IConnectionSettingsValues; + if (settings == null) + return null; + this._infer = new ElasticInferrer(settings); + return this._infer; } } } diff --git a/src/Nest/ElasticClient-IndexExists.cs b/src/Nest/ElasticClient-IndexExists.cs index 6b89cc81e25..4a64e468575 100644 --- a/src/Nest/ElasticClient-IndexExists.cs +++ b/src/Nest/ElasticClient-IndexExists.cs @@ -1,10 +1,12 @@ using System; +using System.IO; using System.Runtime.Remoting.Messaging; using System.Threading.Tasks; using Elasticsearch.Net; namespace Nest { + using IndexExistConverter = Func; public partial class ElasticClient { /// @@ -14,15 +16,26 @@ public IIndexExistsResponse IndexExists(Func( selector, - (p, d) => this.RawDispatch.IndicesExistsDispatch(p) + (p, d) => this.RawDispatch.IndicesExistsDispatch( + p, + new IndexExistConverter(this.DeserializeExistsResponse) + ) ); } public Task IndexExistsAsync(Func selector) { return this.DispatchAsync( selector, - (p, d) => this.RawDispatch.IndicesExistsDispatchAsync(p) + (p, d) => this.RawDispatch.IndicesExistsDispatchAsync( + p, + new IndexExistConverter(this.DeserializeExistsResponse) + ) ); } + + private IndexExistsResponse DeserializeExistsResponse(IElasticsearchResponse response, Stream stream) + { + return new IndexExistsResponse(response); + } } } diff --git a/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs b/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs index 5c8265e898f..545e417c4e6 100644 --- a/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs +++ b/src/Serialization/Elasticsearch.Net.JsonNET/ElasticsearchJsonNetSerializer.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using System.Text; +using System.Threading.Tasks; using Elasticsearch.Net.Serialization; using Newtonsoft.Json; @@ -13,20 +14,51 @@ public class ElasticsearchJsonNetSerializer: IElasticsearchSerializer public ElasticsearchJsonNetSerializer(JsonSerializerSettings settings = null) { - _settings = settings; + _settings = settings ?? CreateSettings(); } - public T Deserialize(byte[] bytes) where T : class + /// + /// Deserialize an object + /// + public virtual T Deserialize(IElasticsearchResponse response, Stream stream, object deserializationState = null) { - if (bytes == null) return null; + var settings = this._settings; + var customConverter = deserializationState as Func; + if (customConverter != null) + { + var t = customConverter(response, stream); + return t; + } - var s = Encoding.UTF8.GetString(bytes); - return JsonConvert.DeserializeObject(s, this._settings); + return _Deserialize(response, stream, settings); + } + public virtual Task DeserializeAsync(IElasticsearchResponse response, Stream stream, object deserializationState = null) + { + //TODO sadly json .net async does not read the stream async so + //figure out wheter reading the stream async on our own might be beneficial + //over memory possible memory usage + var tcs = new TaskCompletionSource(); + var r = this.Deserialize(response, stream, deserializationState); + tcs.SetResult(r); + return tcs.Task; + } + private JsonSerializerSettings CreateSettings() + { + var settings = new JsonSerializerSettings() + { + DefaultValueHandling = DefaultValueHandling.Include, + NullValueHandling = NullValueHandling.Ignore + }; + return settings; + } - //var serializer = new JsonSerializer(); - //var jsonTextReader = new JsonTextReader(new StreamReader(stream)); - //return serializer.Deserialize(jsonTextReader); - // JsonConvert.DeserializeObject() + protected internal T _Deserialize(IElasticsearchResponse response, Stream stream, JsonSerializerSettings settings = null) + { + settings = settings ?? this._settings; + var serializer = JsonSerializer.Create(settings); + var jsonTextReader = new JsonTextReader(new StreamReader(stream)); + var t = (T) serializer.Deserialize(jsonTextReader, typeof (T)); + return t; } public byte[] Serialize(object data, SerializationFormatting formatting = SerializationFormatting.Indented) diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/Elasticsearch.Net.Integration.Yaml.csproj b/src/Tests/Elasticsearch.Net.Integration.Yaml/Elasticsearch.Net.Integration.Yaml.csproj index c524b03e99c..f47d61078a1 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/Elasticsearch.Net.Integration.Yaml.csproj +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/Elasticsearch.Net.Integration.Yaml.csproj @@ -230,10 +230,6 @@ {dd71352d-0eb2-4a02-8ac4-82a17e2a71a8} Elasticsearch.Net.JsonNet - - {8052dc47-3281-4209-b0d2-45555ae30a46} - Elasticsearch.Net.ServiceStackText - {e97ccf40-0ba6-43fe-9f2d-58d454134088} Elasticsearch.Net diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs index 67569bed2a3..51bfd86f6a9 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs @@ -10,7 +10,6 @@ using Elasticsearch.Net.Connection; using Elasticsearch.Net.Connection.HttpClient; using Elasticsearch.Net.JsonNet; -using Elasticsearch.Net.ServiceStackText; using Newtonsoft.Json.Linq; using NUnit.Framework; From 95a7ad758c3a2c8f8ee205842df4b5a19e9200e3 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 19 Mar 2014 13:39:44 +0100 Subject: [PATCH 07/12] fixed all the failing nest unit tests --- .../ElasticsearchHttpClient.cs | 9 +- .../ThriftConnection.cs | 8 +- .../Connection/HttpConnection.cs | 18 +-- .../Connection/IConnection.cs | 4 +- src/Elasticsearch.Net/Connection/Transport.cs | 6 +- .../Domain/ElasticsearchResponse.cs | 26 ++-- .../Stubs/NoopConnection.cs | 4 +- src/Tests/Nest.Tests.Unit/BaseJsonTests.cs | 3 +- .../Nest.Tests.Unit/BigBadUrlUnitTests.cs | 118 +++++++++--------- 9 files changed, 97 insertions(+), 99 deletions(-) diff --git a/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs b/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs index 077c973c726..fe7fbb5bd7b 100644 --- a/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs +++ b/src/Connections/Elasticsearch.Net.Connection.HttpClient/ElasticsearchHttpClient.cs @@ -22,7 +22,6 @@ public ElasticsearchResponse DoSyncRequest(string method, Uri uri, byte[] { var client = new System.Net.Http.HttpClient(); HttpResponseMessage response = null; - Stream result = null; HttpContent content = null; if (data != null) content = new ByteArrayContent(data); @@ -46,8 +45,8 @@ public ElasticsearchResponse DoSyncRequest(string method, Uri uri, byte[] } if (response == null) return ElasticsearchResponse.CreateError(_settings, null, method, uri.ToString(), data); - result = response.Content.ReadAsStreamAsync().Result; - return ElasticsearchResponse.Create(this._settings, (int)response.StatusCode, method, uri.ToString(), data, result); + using (var result = response.Content.ReadAsStreamAsync().Result) + return ElasticsearchResponse.Create(this._settings, (int)response.StatusCode, method, uri.ToString(), data, result); } @@ -62,12 +61,12 @@ public ElasticsearchResponse GetSync(Uri uri, object deserializeState = nu return this.DoSyncRequest("get", uri); } - public Task> Head(Uri uri) + public Task> Head(Uri uri, object deserializeState = null) { throw new NotImplementedException(); } - public ElasticsearchResponse HeadSync(Uri uri) + public ElasticsearchResponse HeadSync(Uri uri, object deserializeState = null) { return this.DoSyncRequest("head", uri); throw new NotImplementedException(); diff --git a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs index 02dbe37a9f0..a5e55750f04 100644 --- a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs +++ b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs @@ -59,7 +59,7 @@ public Task> Get(Uri uri, object deserializationStat }); } - public Task> Head(Uri uri) + public Task> Head(Uri uri, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.HEAD; @@ -69,7 +69,7 @@ public Task> Head(Uri uri) restRequest.Headers.Add("Content-Type", "application/json"); return Task.Factory.StartNew>(()=> { - return this.Execute(restRequest, null); + return this.Execute(restRequest, deserializationState); }); } @@ -84,7 +84,7 @@ public ElasticsearchResponse GetSync(Uri uri, object deserializationState return this.Execute(restRequest, deserializationState); } - public ElasticsearchResponse HeadSync(Uri uri) + public ElasticsearchResponse HeadSync(Uri uri, object deserializationState = null) { var restRequest = new RestRequest(); restRequest.Method = Method.HEAD; @@ -92,7 +92,7 @@ public ElasticsearchResponse HeadSync(Uri uri) restRequest.Headers = new Dictionary(); restRequest.Headers.Add("Content-Type", "application/json"); - return this.Execute(restRequest, null); + return this.Execute(restRequest, deserializationState); } public Task> Post(Uri uri, byte[] data, object deserializationState = null) diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 8794fa4d33d..257c407314f 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -45,9 +45,9 @@ public virtual ElasticsearchResponse GetSync(Uri uri, object deserializati { return this.HeaderOnlyRequest(uri, "GET", deserializationState); } - public virtual ElasticsearchResponse HeadSync(Uri uri) + public virtual ElasticsearchResponse HeadSync(Uri uri, object deserializationState = null) { - return this.HeaderOnlyRequest(uri, "HEAD", null); + return this.HeaderOnlyRequest(uri, "HEAD", deserializationState); } public virtual ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializationState = null) @@ -98,34 +98,34 @@ public virtual IList Sniff(Uri uri) public virtual Task> Get(Uri uri, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "GET"); - return this.DoAsyncRequest(r); + return this.DoAsyncRequest(r, deserializationState: deserializationState); } - public virtual Task> Head(Uri uri) + public virtual Task> Head(Uri uri, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "HEAD"); - return this.DoAsyncRequest(r); + return this.DoAsyncRequest(r, deserializationState: deserializationState); } public virtual Task> Post(Uri uri, byte[] data, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "POST"); - return this.DoAsyncRequest(r, data); + return this.DoAsyncRequest(r, data, deserializationState: deserializationState); } public virtual Task> Put(Uri uri, byte[] data, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "PUT"); - return this.DoAsyncRequest(r, data); + return this.DoAsyncRequest(r, data, deserializationState: deserializationState); } public virtual Task> Delete(Uri uri, byte[] data, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "DELETE"); - return this.DoAsyncRequest(r, data); + return this.DoAsyncRequest(r, data, deserializationState: deserializationState); } public virtual Task> Delete(Uri uri, object deserializationState = null) { var r = this.CreateHttpWebRequest(uri, "DELETE"); - return this.DoAsyncRequest(r); + return this.DoAsyncRequest(r, deserializationState: deserializationState); } private static void ThreadTimeoutCallback(object state, bool timedOut) diff --git a/src/Elasticsearch.Net/Connection/IConnection.cs b/src/Elasticsearch.Net/Connection/IConnection.cs index cfde6b5895f..ecf99a51e2d 100644 --- a/src/Elasticsearch.Net/Connection/IConnection.cs +++ b/src/Elasticsearch.Net/Connection/IConnection.cs @@ -12,8 +12,8 @@ public interface IConnection Task> Get(Uri uri, object deserializationState = null); ElasticsearchResponse GetSync(Uri uri, object deserializationState = null); - Task> Head(Uri uri); - ElasticsearchResponse HeadSync(Uri uri); + Task> Head(Uri uri, object deserializationState = null); + ElasticsearchResponse HeadSync(Uri uri, object deserializationState = null); Task> Post(Uri uri, byte[] data, object deserializationState = null); ElasticsearchResponse PostSync(Uri uri, byte[] data, object deserializationState = null); diff --git a/src/Elasticsearch.Net/Connection/Transport.cs b/src/Elasticsearch.Net/Connection/Transport.cs index 5d30ee75235..7d499a3f882 100644 --- a/src/Elasticsearch.Net/Connection/Transport.cs +++ b/src/Elasticsearch.Net/Connection/Transport.cs @@ -147,9 +147,9 @@ private ElasticsearchResponse _doRequest(string method, Uri uri, byte[] po ? this._connection.DeleteSync(uri, deserializationState) : this._connection.DeleteSync(uri, postData, deserializationState); case "head": - return this._connection.HeadSync(uri); + return this._connection.HeadSync(uri, deserializationState); case "get": - return this._connection.GetSync(uri, null); + return this._connection.GetSync(uri, deserializationState); } throw new Exception("Unknown HTTP method " + method); } @@ -223,7 +223,7 @@ private Task> _doRequestAsync(string method, Uri uri ? this._connection.Delete(uri, deserializationState) : this._connection.Delete(uri, postData, deserializationState); case "head": - return this._connection.Head(uri); + return this._connection.Head(uri, deserializationState); case "get": return this._connection.Get(uri, deserializationState); } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index ce2572c85c6..bd5621c8ec9 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -118,27 +118,25 @@ public static ElasticsearchResponse Create( cs.RequestUrl = path; cs.RequestMethod = method; var s = stream; - if (settings.KeepRawResponse) + using (var ms = new MemoryStream()) { - using (var ms = new MemoryStream()) + if (settings.KeepRawResponse) { stream.CopyTo(ms); cs.ResponseRaw = ms.ToArray(); + ms.Position = 0; s = ms; } - } - var customConverter = deserializeState as Func; - if (customConverter != null) - { - var t = customConverter(cs, stream); - cs.Response = t; - } - else cs.Response = settings.Serializer.Deserialize(cs, s, deserializeState); - - - + var customConverter = deserializeState as Func; + if (customConverter != null) + { + var t = customConverter(cs, s); + cs.Response = t; + } + else cs.Response = settings.Serializer.Deserialize(cs, s, deserializeState); - return cs; + return cs; + } } static ElasticsearchResponse() diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs index 29c359d5ef2..4d7b17e6321 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/NoopConnection.cs @@ -58,13 +58,13 @@ public virtual ElasticsearchResponse GetSync(Uri uri, object deserializati return _responseGenerator.Create(); } - public virtual Task> Head(Uri uri) + public virtual Task> Head(Uri uri, object deserializationState = null) { _uriObserver.Observe(uri); return Task.FromResult(_responseGenerator.Create()); } - public virtual ElasticsearchResponse HeadSync(Uri uri) + public virtual ElasticsearchResponse HeadSync(Uri uri, object deserializationState = null) { _uriObserver.Observe(uri); return _responseGenerator.Create(); diff --git a/src/Tests/Nest.Tests.Unit/BaseJsonTests.cs b/src/Tests/Nest.Tests.Unit/BaseJsonTests.cs index dee9c35b8d9..38516517a39 100644 --- a/src/Tests/Nest.Tests.Unit/BaseJsonTests.cs +++ b/src/Tests/Nest.Tests.Unit/BaseJsonTests.cs @@ -30,7 +30,8 @@ public class BaseJsonTests public BaseJsonTests() { - this._settings = new ConnectionSettings(Test.Default.Uri, Test.Default.DefaultIndex); + this._settings = new ConnectionSettings(Test.Default.Uri, Test.Default.DefaultIndex) + .ExposeRawResponse(); this._connection = new InMemoryConnection(this._settings); this._client = new ElasticClient(this._settings, this._connection); } diff --git a/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs b/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs index c415f16bc68..8afd6c89859 100644 --- a/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs +++ b/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs @@ -42,65 +42,65 @@ private class OtherDoc [Test] public void TestAllTheUrls() { - Do("POST", "/_aliases", c => c.Alias(a => a)); - Do("GET", "/_analyze", c => c.Analyze(a => a)); - Do("GET", "/myindex/_analyze", c => c.Analyze(a => a.Index("myindex"))); - Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); - Do("POST", "/myindex/mytype/_bulk", c => c.Bulk(b => b.FixedPath("myindex", "mytype").Index(ib => ib.Object(new Doc { Id = "1" })))); - Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); - Do("POST", "/_bulk", c => c.Bulk(b => b.Index(ib => ib.Object(new Doc { Id = "1" })))); - Do("POST", "/_cache/clear", c => c.ClearCache()); - Do("POST", "/mydefaultindex/_cache/clear", c => c.ClearCache(cc => cc.Index())); - Do("POST", "/mydefaultindex/_close", c => c.CloseIndex(ci => ci.Index())); - Do("GET", "/_nodes", c => c.NodesInfo()); - Do("GET", "/_nodes/insert-marvel-character", c => c.NodesInfo(cn => cn.NodeId("insert-marvel-character"))); - Do("GET", "/_nodes/stats", c => c.NodesStats()); - Do("GET", "/_nodes/insert-marvel-character/stats/jvm", c => c - .NodesStats(cn => cn.NodeId("insert-marvel-character").Metrics(NodesStatsMetric.Jvm))); - Do("GET", "/_cluster/state", c => c.ClusterState()); - Do("GET", "/_cluster/state?local=true", c => c.ClusterState(cs => cs.Local())); - Do("POST", "/_count", c => c.Count()); - Do("POST", "/_all/doc/_count", c => c.Count(cc => cc.AllIndices().Type())); - Do("POST", "/mydefaultindex/doc/_count", c => c.Count(cc => cc.Index().Type())); - Do("POST", "/mydefaultindex/_count", c => c.Count(cc => cc.Index())); - Do("POST", "/mydefaultindex/doc/_count", c => c.Count()); - Do("POST", "/customindex/doc/_count", c => c.Count(cc => cc.Index("customindex"))); - Do("POST", "/new-index-name", c => c.CreateIndex("new-index-name")); - Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(d => d.Id("1"))); - Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(1)); - Do("DELETE", "/customindex/doc/1", c => c.Delete(d => d.Index("customindex").Id(1))); - Do("DELETE", "/customindex/doc/1", c => c.Delete(1, d => d.Index("customindex"))); - Do("DELETE", "/mydefaultindex/doc/_query", c => c.DeleteByQuery(q => q.MatchAll())); - Do("DELETE", "/customindex/doc/_query", c => c.DeleteByQuery(q => q.Index("customindex").MatchAll())); - Do("DELETE", "/_all/doc/_query", c => c.DeleteByQuery(q => q.AllIndices().MatchAll())); - Do("DELETE", "/mydefaultindex/_query", c => c.DeleteByQuery(q => q.AllTypes().MatchAll())); - Do("DELETE", "/mydefaultindex", c => c.DeleteIndex(i => i.Index())); - Do("DELETE", "/a%2Cb", c => c.DeleteIndex(i => i.Indices("a", "b"))); - Do("POST", "/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }))); - Do("POST", "/customindex/customtype/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }), index: "customindex", type: "customtype")); - Do("DELETE", "/mydefaultindex/doc/_mapping", c => c.DeleteMapping(d => d.Index().Type())); - Do("DELETE", "/_template/myTemplate", c => c.DeleteTemplate("myTemplate")); - Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.AllIndices())); - Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer")); - Do("DELETE", "/mycustomindex/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.Index("mycustomindex"))); - Do("POST", "/_all/_flush", c => c.Flush(f => f.AllIndices())); - Do("POST", "/mycustomindex/_flush", c => c.Flush(f => f.Index("mycustomindex"))); - Do("GET", "/mydefaultindex/doc/1", c => c.Get(1)); - Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(1, index: "mycustomindex", type: "mycustomtype")); - Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(g => g.Id(1).Index("mycustomindex").Type("mycustomtype"))); - Do("GET", "/mydefaultindex/_alias/*", c => c.GetAliases(a => a.Index())); - Do("GET", "/_alias/prefix-*", c => c.GetAliases(a => a.Alias("prefix-*"))); - Do("GET", "/mydefaultindex/_settings", c => c.GetIndexSettings(i => i.Index())); - Do("GET", "/mydefaultindex/_mapping/doc", c => c.GetMapping()); - Do("GET", "/mycustomindex/_mapping/doc", c => c.GetMapping(m => m.Index("mycustomindex"))); - Do("GET", "/mycustomindex/_mapping/sometype", c => c.GetMapping(m => m.Index("mycustomindex").Type("sometype"))); - Do("GET", "/_template/mytemplate", c => c.GetTemplate("mytemplate")); - Do("GET", "/_all/_warmer/mywarmer", c => c.GetWarmer("mywarmer")); - Do("GET", "/mycustomindex/_warmer/mywarmer", c => c.GetWarmer("mywarmer", g => g.Index("mycustomindex"))); - Do("GET", "/_cluster/health?level=indices", c => c.Health(h => h.Level(LevelOptions.Indices))); - Do("GET", "/_cluster/health", c => c.Health()); - Do("POST", "/mydefaultindex/doc/2", c => c.Index(new Doc { Id = "2" })); - Do("POST", "/customindex/customtype/2?refresh=true", c => c.Index(new Doc { Id = "2" }, i => i.Index("customindex").Type("customtype").Refresh())); + //Do("POST", "/_aliases", c => c.Alias(a => a)); + //Do("GET", "/_analyze", c => c.Analyze(a => a)); + //Do("GET", "/myindex/_analyze", c => c.Analyze(a => a.Index("myindex"))); + //Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); + //Do("POST", "/myindex/mytype/_bulk", c => c.Bulk(b => b.FixedPath("myindex", "mytype").Index(ib => ib.Object(new Doc { Id = "1" })))); + //Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); + //Do("POST", "/_bulk", c => c.Bulk(b => b.Index(ib => ib.Object(new Doc { Id = "1" })))); + //Do("POST", "/_cache/clear", c => c.ClearCache()); + //Do("POST", "/mydefaultindex/_cache/clear", c => c.ClearCache(cc => cc.Index())); + //Do("POST", "/mydefaultindex/_close", c => c.CloseIndex(ci => ci.Index())); + //Do("GET", "/_nodes", c => c.NodesInfo()); + //Do("GET", "/_nodes/insert-marvel-character", c => c.NodesInfo(cn => cn.NodeId("insert-marvel-character"))); + //Do("GET", "/_nodes/stats", c => c.NodesStats()); + //Do("GET", "/_nodes/insert-marvel-character/stats/jvm", c => c + // .NodesStats(cn => cn.NodeId("insert-marvel-character").Metrics(NodesStatsMetric.Jvm))); + //Do("GET", "/_cluster/state", c => c.ClusterState()); + //Do("GET", "/_cluster/state?local=true", c => c.ClusterState(cs => cs.Local())); + //Do("POST", "/_count", c => c.Count()); + //Do("POST", "/_all/doc/_count", c => c.Count(cc => cc.AllIndices().Type())); + //Do("POST", "/mydefaultindex/doc/_count", c => c.Count(cc => cc.Index().Type())); + //Do("POST", "/mydefaultindex/_count", c => c.Count(cc => cc.Index())); + //Do("POST", "/mydefaultindex/doc/_count", c => c.Count()); + //Do("POST", "/customindex/doc/_count", c => c.Count(cc => cc.Index("customindex"))); + //Do("POST", "/new-index-name", c => c.CreateIndex("new-index-name")); + //Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(d => d.Id("1"))); + //Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(1)); + //Do("DELETE", "/customindex/doc/1", c => c.Delete(d => d.Index("customindex").Id(1))); + //Do("DELETE", "/customindex/doc/1", c => c.Delete(1, d => d.Index("customindex"))); + //Do("DELETE", "/mydefaultindex/doc/_query", c => c.DeleteByQuery(q => q.MatchAll())); + //Do("DELETE", "/customindex/doc/_query", c => c.DeleteByQuery(q => q.Index("customindex").MatchAll())); + //Do("DELETE", "/_all/doc/_query", c => c.DeleteByQuery(q => q.AllIndices().MatchAll())); + //Do("DELETE", "/mydefaultindex/_query", c => c.DeleteByQuery(q => q.AllTypes().MatchAll())); + //Do("DELETE", "/mydefaultindex", c => c.DeleteIndex(i => i.Index())); + //Do("DELETE", "/a%2Cb", c => c.DeleteIndex(i => i.Indices("a", "b"))); + //Do("POST", "/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }))); + //Do("POST", "/customindex/customtype/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }), index: "customindex", type: "customtype")); + //Do("DELETE", "/mydefaultindex/doc/_mapping", c => c.DeleteMapping(d => d.Index().Type())); + //Do("DELETE", "/_template/myTemplate", c => c.DeleteTemplate("myTemplate")); + //Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.AllIndices())); + //Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer")); + //Do("DELETE", "/mycustomindex/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.Index("mycustomindex"))); + //Do("POST", "/_all/_flush", c => c.Flush(f => f.AllIndices())); + //Do("POST", "/mycustomindex/_flush", c => c.Flush(f => f.Index("mycustomindex"))); + //Do("GET", "/mydefaultindex/doc/1", c => c.Get(1)); + //Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(1, index: "mycustomindex", type: "mycustomtype")); + //Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(g => g.Id(1).Index("mycustomindex").Type("mycustomtype"))); + //Do("GET", "/mydefaultindex/_alias/*", c => c.GetAliases(a => a.Index())); + //Do("GET", "/_alias/prefix-*", c => c.GetAliases(a => a.Alias("prefix-*"))); + //Do("GET", "/mydefaultindex/_settings", c => c.GetIndexSettings(i => i.Index())); + //Do("GET", "/mydefaultindex/_mapping/doc", c => c.GetMapping()); + //Do("GET", "/mycustomindex/_mapping/doc", c => c.GetMapping(m => m.Index("mycustomindex"))); + //Do("GET", "/mycustomindex/_mapping/sometype", c => c.GetMapping(m => m.Index("mycustomindex").Type("sometype"))); + //Do("GET", "/_template/mytemplate", c => c.GetTemplate("mytemplate")); + //Do("GET", "/_all/_warmer/mywarmer", c => c.GetWarmer("mywarmer")); + //Do("GET", "/mycustomindex/_warmer/mywarmer", c => c.GetWarmer("mywarmer", g => g.Index("mycustomindex"))); + //Do("GET", "/_cluster/health?level=indices", c => c.Health(h => h.Level(LevelOptions.Indices))); + //Do("GET", "/_cluster/health", c => c.Health()); + //Do("POST", "/mydefaultindex/doc/2", c => c.Index(new Doc { Id = "2" })); + //Do("POST", "/customindex/customtype/2?refresh=true", c => c.Index(new Doc { Id = "2" }, i => i.Index("customindex").Type("customtype").Refresh())); Do("HEAD", "/mydefaultindex", c => c.IndexExists(h => h.Index())); Do("POST", "/_bulk", c => c.IndexMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }))); Do("POST", "/customindex/customtype/_bulk", c => c.IndexMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }), index: "customindex", type: "customtype")); From 6a3e5145317d7b7e553415ae811335208ddfeab3 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 19 Mar 2014 16:47:56 +0100 Subject: [PATCH 08/12] fixed nests unit tests --- .../QueryStringParameters.Generated.cshtml | 3 +- ...tringParametersExtensions.Generated.cshtml | 8 +- .../Views/_Descriptors.Generated.cshtml | 6 +- .../Connection/HttpConnection.cs | 60 ++++++--- .../Connection/ITransport.cs | 1 + src/Elasticsearch.Net/Connection/Transport.cs | 7 +- .../Domain/ElasticsearchResponse.cs | 4 +- .../Domain/QueryStringParameters.Generated.cs | 54 ++++---- .../ElasticsearchClient.Generated.cs | 16 +-- src/Elasticsearch.Net/ElasticsearchClient.cs | 2 + .../IElasticsearchClient.Generated.cs | 8 +- src/Nest/DSL/Search/SourceDescriptor.cs | 14 +- src/Nest/DSL/SearchDescriptor.cs | 4 +- src/Nest/DSL/SourceDescriptor.cs | 39 ++++++ src/Nest/DSL/_Descriptors.generated.cs | 112 ++++++++++++++-- ...eryStringParametersExtensions.Generated.cs | 96 ++++++++++++++ src/Nest/ElasticClient-IndexExists.cs | 4 +- src/Nest/ElasticClient-Percolate.cs | 6 +- src/Nest/ElasticClient-Search.cs | 5 +- src/Nest/ElasticClient-Source.cs | 22 +-- src/Nest/ElasticClient.cs | 24 ++-- src/Nest/IElasticClient.cs | 4 +- src/Nest/Nest.csproj | 1 + src/Nest/RawDispatch.generated.cs | 4 +- .../Nest.Tests.Integration/ConnectionTests.cs | 8 +- .../Core/Get/GetMultiTests.cs | 53 +++++--- .../ElasticsearchConfiguration.cs | 3 +- .../Indices/OpenCloseTests.cs | 7 +- .../IntegrationTests.cs | 2 +- .../Search/SearchType/SearchTypeScanTests.cs | 3 +- src/Tests/Nest.Tests.MockData/NestTestData.cs | 12 +- .../Nest.Tests.Unit/BigBadUrlUnitTests.cs | 125 +++++++++--------- 32 files changed, 495 insertions(+), 222 deletions(-) create mode 100644 src/Nest/DSL/SourceDescriptor.cs diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParameters.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParameters.Generated.cshtml index b67c6a10aa1..409d33b2f92 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParameters.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParameters.Generated.cshtml @@ -30,7 +30,8 @@ namespace Elasticsearch.Net var mm = kv.Key; var fieldType = kv.Value.CsharpType(kv.Key).Replace("params", ""); var setter = mm; - if (mm.Contains("fields") && fieldType.Contains("string")) + var isFields = (mm.Contains("fields") || mm.Contains("source_include") || mm.Contains("source_exclude")); + if (isFields && fieldType.Contains("string")) { fieldType = "IEnumerable"; setter = mm + ".Select(f=>(object)f)"; diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParametersExtensions.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParametersExtensions.Generated.cshtml index 3d7546e5a47..b1d98b78937 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParametersExtensions.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/QueryStringParametersExtensions.Generated.cshtml @@ -2,6 +2,7 @@ @using System.Linq @using CodeGeneration.LowLevelClient.Domain @using CodeGeneration.LowLevelClient +@using CsQuery.Engine.PseudoClassSelectors using System; using System.Collections.Generic; @@ -21,7 +22,7 @@ namespace Nest { @foreach (CsharpMethod method in Model.CsharpMethodsWithQueryStringInfo) { - if (!method.Url.Params.Any(p => p.Key.Contains("field"))) + if (!method.Url.Params.Any(p => p.Key.Contains("field") || p.Key.Contains("source_"))) { continue; } @@ -30,7 +31,8 @@ namespace Nest var mm = kv.Key; var fieldType = kv.Value.CsharpType(kv.Key).Replace("params", ""); var setter = mm; - if (mm.Contains("fields") && fieldType.Contains("string")) + var isFields = (mm.Contains("fields") || mm.Contains("source_include") || mm.Contains("source_exclude")); + if (isFields && fieldType.Contains("string")) { fieldType = "IEnumerable"; setter = mm + ".Select(f=>(PropertyPathMarker)f)"; @@ -39,7 +41,7 @@ namespace Nest { fieldType = "PropertyPathMarker"; } - if (mm.Contains("fields") && fieldType.Contains("PropertyPath")) + if (isFields && fieldType.Contains("PropertyPath")) { ///@kv.Value.Description diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/_Descriptors.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/_Descriptors.Generated.cshtml index c55aea57acc..39fc07519ea 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/_Descriptors.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/_Descriptors.Generated.cshtml @@ -36,6 +36,8 @@ namespace Nest var m = kv.Key.ToPascalCase(); var mm = (m != "Type" && m != "Index" && m != "Script") ? m : m + "QueryString"; var typed = !method.DescriptorTypeGeneric.IsNullOrEmpty(); + var mml = mm.ToLowerInvariant(); + var fieldMethod = (mml.Contains("fields") || mml.Contains("sourceinclude") || mml.Contains("sourceexclude") ) && t.Contains("string"); ///@kv.Value.Description public @Raw(type) @(mm)(@t @kv.Key@tSuffix) @@ -44,8 +46,8 @@ namespace Nest return this; } - if (mm.ToLowerInvariant().Contains("fields") && t.Contains("string")) - { + if (fieldMethod) + { ///@kv.Value.Description public @Raw(type) @mm@(Raw(typed ? "" : ""))(params @Raw("Expression>[]") typedPathLookups) @Raw(typed ? "" : "where T : class") diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 257c407314f..62639680a20 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Net; +using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading; @@ -222,35 +223,51 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebReques { using (var response = (HttpWebResponse)request.GetResponse()) using (var responseStream = response.GetResponseStream()) - using (var memoryStream = new MemoryStream()) + return WebToElasticsearchResponse(data, deserializationState, responseStream, response, method, path, tracer); + } + catch (WebException webException) + { + var httpEx = webException.Response as HttpWebResponse; + if (httpEx != null && httpEx.StatusCode == HttpStatusCode.NotFound) { - Stream s = responseStream; - if(_ConnectionSettings.KeepRawResponse) - { - responseStream.CopyTo(memoryStream); - //use memory stream for serialization instead - //our own serializers have special handling for memorystream - //that will prevent double reads - s = memoryStream; - } + cs = WebToElasticsearchResponse(data, deserializationState, httpEx.GetResponseStream(), httpEx, method, path, tracer); + cs.Error = new ConnectionError(webException); + return cs; - cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); - var result = this._ConnectionSettings.Serializer.Deserialize(cs, s, deserializationState); - cs.Response = result; - cs.ResponseRaw = memoryStream.ToArray(); + } + cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); tracer.SetResult(cs); + _ConnectionSettings.ConnectionStatusHandler(cs); return cs; - } } - catch (WebException webException) + } + + } + + private ElasticsearchResponse WebToElasticsearchResponse(byte[] data, object deserializationState, + Stream responseStream, HttpWebResponse response, string method, string path, ElasticsearchResponseTracer tracer) + { + ElasticsearchResponse cs; + using (var memoryStream = new MemoryStream()) + { + Stream s = responseStream; + if (_ConnectionSettings.KeepRawResponse) { - cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); - tracer.SetResult(cs); - _ConnectionSettings.ConnectionStatusHandler(cs); - return cs; + responseStream.CopyTo(memoryStream); + //use memory stream for serialization instead + //our own serializers have special handling for memorystream + //that will prevent double reads + memoryStream.Position = 0; + s = memoryStream; } - } + cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + var result = this._ConnectionSettings.Serializer.Deserialize(cs, s, deserializationState); + cs.Response = result; + cs.ResponseRaw = memoryStream.ToArray(); + tracer.SetResult(cs); + return cs; + } } protected virtual Task> DoAsyncRequest(HttpWebRequest request, byte[] data = null, object deserializationState = null) @@ -343,6 +360,7 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionS if (read.Result == 0) break; memoryStream.Write(buffer, 0, read.Result); } + memoryStream.Position = 0; s = memoryStream; } var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); diff --git a/src/Elasticsearch.Net/Connection/ITransport.cs b/src/Elasticsearch.Net/Connection/ITransport.cs index 35ea00bd866..073b4175c8a 100644 --- a/src/Elasticsearch.Net/Connection/ITransport.cs +++ b/src/Elasticsearch.Net/Connection/ITransport.cs @@ -18,6 +18,7 @@ ElasticsearchResponse DoRequest( int retried = 0, int? seed = null ); + void Sniff(bool fromStartup = false); Task> DoRequestAsync( string method, diff --git a/src/Elasticsearch.Net/Connection/Transport.cs b/src/Elasticsearch.Net/Connection/Transport.cs index 7d499a3f882..f14f931f379 100644 --- a/src/Elasticsearch.Net/Connection/Transport.cs +++ b/src/Elasticsearch.Net/Connection/Transport.cs @@ -39,13 +39,10 @@ public Transport( //TODO: take the datetimeprovider from the connection pool? this._dateTimeProvider = dateTimeProvider ?? new DateTimeProvider(); - if (this._configurationValues.SniffsOnStartup) - this.Sniff(fromStartup: true); - else this._lastSniff = this._dateTimeProvider.Now(); } - private void Sniff(bool fromStartup = false) + public void Sniff(bool fromStartup = false) { this._connectionPool.Sniff(this._connection, fromStartup); this._lastSniff = this._dateTimeProvider.Now(); @@ -122,7 +119,7 @@ private ElasticsearchResponse RetryRequest( { var maxRetries = this.GetMaximumRetries(); var exceptionMessage = "Unable to perform request: '{0} {1}' on any of the nodes after retrying {2} times." - .F( method, path, retried); + .F( method, path.IsNullOrEmpty() ? "/" : "", retried); this._connectionPool.MarkDead(baseUri, this._configurationValues.DeadTimeout, this._configurationValues.MaxDeadTimeout); if (this._configurationValues.SniffsOnConnectionFault && retried == 0) this.Sniff(); diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index bd5621c8ec9..da6389b5ab2 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -66,7 +66,8 @@ internal bool SuccessOrKnownError { return this.Success || (this.HttpStatusCode.HasValue - && this.HttpStatusCode.Value != 503 && (this.HttpStatusCode.Value >= 400 && this.HttpStatusCode.Value < 599)); + && this.HttpStatusCode.Value != 503 + && ((this.HttpStatusCode.Value >= 400 && this.HttpStatusCode.Value < 599))); } } @@ -82,6 +83,7 @@ private ElasticsearchResponse(IConnectionConfigurationValues settings, Exception this.Error = new ConnectionError(e); if (this.Error.HttpStatusCode != null) this.HttpStatusCode = (int) this.Error.HttpStatusCode; + this.ResponseRaw = this.Error.ResponseReadFromWebException; } private ElasticsearchResponse(IConnectionConfigurationValues settings, int statusCode) : this(settings) { diff --git a/src/Elasticsearch.Net/Domain/QueryStringParameters.Generated.cs b/src/Elasticsearch.Net/Domain/QueryStringParameters.Generated.cs index 59945c1f0b4..d3a60e1f5b0 100644 --- a/src/Elasticsearch.Net/Domain/QueryStringParameters.Generated.cs +++ b/src/Elasticsearch.Net/Domain/QueryStringParameters.Generated.cs @@ -1741,21 +1741,21 @@ public ExplainQueryString Source(params string[] _source) } - internal string[] __source_exclude { get; set; } + internal IEnumerable __source_exclude { get; set; } ///A list of fields to exclude from the returned _source field public ExplainQueryString SourceExclude(params string[] _source_exclude) { - this.__source_exclude = _source_exclude; + this.__source_exclude = _source_exclude.Select(f=>(object)f); this.Add("_source_exclude", this.__source_exclude); return this; } - internal string[] __source_include { get; set; } + internal IEnumerable __source_include { get; set; } ///A list of fields to extract and return from the _source field public ExplainQueryString SourceInclude(params string[] _source_include) { - this.__source_include = _source_include; + this.__source_include = _source_include.Select(f=>(object)f); this.Add("_source_include", this.__source_include); return this; } @@ -1841,21 +1841,21 @@ public GetQueryString Source(params string[] _source) } - internal string[] __source_exclude { get; set; } + internal IEnumerable __source_exclude { get; set; } ///A list of fields to exclude from the returned _source field public GetQueryString SourceExclude(params string[] _source_exclude) { - this.__source_exclude = _source_exclude; + this.__source_exclude = _source_exclude.Select(f=>(object)f); this.Add("_source_exclude", this.__source_exclude); return this; } - internal string[] __source_include { get; set; } + internal IEnumerable __source_include { get; set; } ///A list of fields to extract and return from the _source field public GetQueryString SourceInclude(params string[] _source_include) { - this.__source_include = _source_include; + this.__source_include = _source_include.Select(f=>(object)f); this.Add("_source_include", this.__source_include); return this; } @@ -1888,12 +1888,12 @@ public GetQueryString VersionType(VersionTypeOptions version_type) ///http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// /// - public class GetSourceQueryString : FluentQueryString + public class SourceQueryString : FluentQueryString { internal string _parent { get; set; } ///The ID of the parent document - public GetSourceQueryString Parent(string parent) + public SourceQueryString Parent(string parent) { this._parent = parent; this.Add("parent", this._parent); @@ -1903,7 +1903,7 @@ public GetSourceQueryString Parent(string parent) internal string _preference { get; set; } ///Specify the node or shard the operation should be performed on (default: random) - public GetSourceQueryString Preference(string preference) + public SourceQueryString Preference(string preference) { this._preference = preference; this.Add("preference", this._preference); @@ -1913,7 +1913,7 @@ public GetSourceQueryString Preference(string preference) internal bool _realtime { get; set; } ///Specify whether to perform the operation in realtime or search mode - public GetSourceQueryString Realtime(bool realtime) + public SourceQueryString Realtime(bool realtime) { this._realtime = realtime; this.Add("realtime", this._realtime); @@ -1923,7 +1923,7 @@ public GetSourceQueryString Realtime(bool realtime) internal bool _refresh { get; set; } ///Refresh the shard containing the document before performing the operation - public GetSourceQueryString Refresh(bool refresh) + public SourceQueryString Refresh(bool refresh) { this._refresh = refresh; this.Add("refresh", this._refresh); @@ -1933,7 +1933,7 @@ public GetSourceQueryString Refresh(bool refresh) internal string _routing { get; set; } ///Specific routing value - public GetSourceQueryString Routing(string routing) + public SourceQueryString Routing(string routing) { this._routing = routing; this.Add("routing", this._routing); @@ -1943,7 +1943,7 @@ public GetSourceQueryString Routing(string routing) internal string[] __source { get; set; } ///True or false to return the _source field or not, or a list of fields to return - public GetSourceQueryString Source(params string[] _source) + public SourceQueryString Source(params string[] _source) { this.__source = _source; this.Add("_source", this.__source); @@ -1951,21 +1951,21 @@ public GetSourceQueryString Source(params string[] _source) } - internal string[] __source_exclude { get; set; } + internal IEnumerable __source_exclude { get; set; } ///A list of fields to exclude from the returned _source field - public GetSourceQueryString SourceExclude(params string[] _source_exclude) + public SourceQueryString SourceExclude(params string[] _source_exclude) { - this.__source_exclude = _source_exclude; + this.__source_exclude = _source_exclude.Select(f=>(object)f); this.Add("_source_exclude", this.__source_exclude); return this; } - internal string[] __source_include { get; set; } + internal IEnumerable __source_include { get; set; } ///A list of fields to extract and return from the _source field - public GetSourceQueryString SourceInclude(params string[] _source_include) + public SourceQueryString SourceInclude(params string[] _source_include) { - this.__source_include = _source_include; + this.__source_include = _source_include.Select(f=>(object)f); this.Add("_source_include", this.__source_include); return this; } @@ -1973,7 +1973,7 @@ public GetSourceQueryString SourceInclude(params string[] _source_include) internal int _version { get; set; } ///Explicit version number for concurrency control - public GetSourceQueryString Version(int version) + public SourceQueryString Version(int version) { this._version = version; this.Add("version", this._version); @@ -1983,7 +1983,7 @@ public GetSourceQueryString Version(int version) internal VersionTypeOptions _version_type { get; set; } ///Specific version type - public GetSourceQueryString VersionType(VersionTypeOptions version_type) + public SourceQueryString VersionType(VersionTypeOptions version_type) { this._version_type = version_type; this.Add("version_type", this._version_type); @@ -4021,21 +4021,21 @@ public MultiGetQueryString Source(params string[] _source) } - internal string[] __source_exclude { get; set; } + internal IEnumerable __source_exclude { get; set; } ///A list of fields to exclude from the returned _source field public MultiGetQueryString SourceExclude(params string[] _source_exclude) { - this.__source_exclude = _source_exclude; + this.__source_exclude = _source_exclude.Select(f=>(object)f); this.Add("_source_exclude", this.__source_exclude); return this; } - internal string[] __source_include { get; set; } + internal IEnumerable __source_include { get; set; } ///A list of fields to extract and return from the _source field public MultiGetQueryString SourceInclude(params string[] _source_include) { - this.__source_include = _source_include; + this.__source_include = _source_include.Select(f=>(object)f); this.Add("_source_include", this.__source_include); return this; } diff --git a/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs b/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs index 35fa3319ac7..b33bd8fccdf 100644 --- a/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs +++ b/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs @@ -6447,7 +6447,7 @@ public Task> GetAsync(string index, str /// - If T is of type byte[] deserialization will be shortcircuited /// - If T is of type VoidResponse the response stream will be ignored completely /// - public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null, object deserializationState = null) + public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); @@ -6456,7 +6456,7 @@ public ElasticsearchResponse GetSource(string index, string type, string i NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetSourceQueryString()); + var qs = queryString(new SourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } @@ -6481,7 +6481,7 @@ public ElasticsearchResponse GetSource(string index, string type, string i /// - If T is of type byte[] deserialization will be shortcircuited /// - If T is of type VoidResponse the response stream will be ignored completely /// - public Task> GetSourceAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) + public Task> GetSourceAsync(string index, string type, string id, Func queryString = null, object deserializationState = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); @@ -6490,7 +6490,7 @@ public Task> GetSourceAsync(string index, string typ NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetSourceQueryString()); + var qs = queryString(new SourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } @@ -6516,7 +6516,7 @@ public Task> GetSourceAsync(string index, string typ /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] /// - can be safely dispatched to a nullable type even if intermediate properties do not exist /// - public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null) + public ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); @@ -6525,7 +6525,7 @@ public ElasticsearchResponse GetSource(string index, string t NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetSourceQueryString()); + var qs = queryString(new SourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } @@ -6550,7 +6550,7 @@ public ElasticsearchResponse GetSource(string index, string t /// - i.e result.Response.hits.hits[0].property.nested["nested_deeper"] /// - can be safely dispatched to a nullable type even if intermediate properties do not exist /// - public Task> GetSourceAsync(string index, string type, string id, Func queryString = null) + public Task> GetSourceAsync(string index, string type, string id, Func queryString = null) { index.ThrowIfNullOrEmpty("index"); type.ThrowIfNullOrEmpty("type"); @@ -6559,7 +6559,7 @@ public Task> GetSourceAsync(string inde NameValueCollection nv = null; if (queryString != null) { - var qs = queryString(new GetSourceQueryString()); + var qs = queryString(new SourceQueryString()); if (qs != null) nv = this.ToNameValueCollection(qs); } diff --git a/src/Elasticsearch.Net/ElasticsearchClient.cs b/src/Elasticsearch.Net/ElasticsearchClient.cs index fa20dd2b553..df33beb24da 100644 --- a/src/Elasticsearch.Net/ElasticsearchClient.cs +++ b/src/Elasticsearch.Net/ElasticsearchClient.cs @@ -34,6 +34,8 @@ public ElasticsearchClient( //neccessary to pass the serializer to ElasticsearchResponse this.Settings.Serializer = this.Transport.Serializer; + if (this.Settings.SniffsOnStartup) + this.Transport.Sniff(fromStartup: true); } protected NameValueCollection ToNameValueCollection(FluentQueryString qs) diff --git a/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs b/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs index 37f02a83d78..990d37efeb2 100644 --- a/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs +++ b/src/Elasticsearch.Net/IElasticsearchClient.Generated.cs @@ -3491,7 +3491,7 @@ public interface IElasticsearchClient /// - If T is of type VoidResponse the response stream will be ignored completely /// - ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null, object deserializationState = null); + ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null, object deserializationState = null); ///Represents a GET on /{index}/{type}/{id}/_source ///Returns: A task that'll return an ElasticsearchResponse<T> holding the reponse body deserialized as T. @@ -3508,7 +3508,7 @@ public interface IElasticsearchClient /// - If T is of type VoidResponse the response stream will be ignored completely /// - Task> GetSourceAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); + Task> GetSourceAsync(string index, string type, string id, Func queryString = null, object deserializationState = null); ///Represents a GET on /{index}/{type}/{id}/_source ///Returns: ElasticsearchResponse<T> holding the response body deserialized as DynamicDictionary @@ -3527,7 +3527,7 @@ public interface IElasticsearchClient /// - can be safely dispatched to a nullable type even if intermediate properties do not exist /// - ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null); + ElasticsearchResponse GetSource(string index, string type, string id, Func queryString = null); ///Represents a GET on /{index}/{type}/{id}/_source ///Returns: Task that'll return an ElasticsearchResponse<T$gt; holding the response body deserialized as DynamicDictionary @@ -3546,7 +3546,7 @@ public interface IElasticsearchClient /// - can be safely dispatched to a nullable type even if intermediate properties do not exist /// - Task> GetSourceAsync(string index, string type, string id, Func queryString = null); + Task> GetSourceAsync(string index, string type, string id, Func queryString = null); ///Represents a POST on /{index}/{type} ///Returns: ElasticsearchResponse<T> holding the reponse body deserialized as T. diff --git a/src/Nest/DSL/Search/SourceDescriptor.cs b/src/Nest/DSL/Search/SourceDescriptor.cs index e8794992e8c..5abf744a722 100644 --- a/src/Nest/DSL/Search/SourceDescriptor.cs +++ b/src/Nest/DSL/Search/SourceDescriptor.cs @@ -8,7 +8,7 @@ namespace Nest.DSL.Search { - public class SourceDescriptor where T : class + public class SearchSourceDescriptor where T : class { [JsonProperty("include")] internal IEnumerable _Include { get; set; } @@ -16,32 +16,32 @@ public class SourceDescriptor where T : class [JsonProperty("exclude")] internal IEnumerable _Exclude { get; set; } - public SourceDescriptor Include(params string[] fields) + public SearchSourceDescriptor Include(params string[] fields) { this._Include = fields.Select(f => (PropertyPathMarker) f).ToList(); return this; } - public SourceDescriptor Include(params Expression>[] fields) + public SearchSourceDescriptor Include(params Expression>[] fields) { this._Include = fields.Select(f => (PropertyPathMarker) f).ToList(); return this; } - public SourceDescriptor Include(Func, FluentFieldList> fields) + public SearchSourceDescriptor Include(Func, FluentFieldList> fields) { this._Include = fields(new FluentFieldList()).ToList(); return this; } - public SourceDescriptor Exclude(params string[] fields) + public SearchSourceDescriptor Exclude(params string[] fields) { this._Exclude = fields.Select(f => (PropertyPathMarker) f).ToList(); return this; } - public SourceDescriptor Exclude(params Expression>[] fields) + public SearchSourceDescriptor Exclude(params Expression>[] fields) { this._Exclude = fields.Select(f => (PropertyPathMarker) f).ToList(); return this; } - public SourceDescriptor Exclude(Func, FluentFieldList> fields) + public SearchSourceDescriptor Exclude(Func, FluentFieldList> fields) { this._Exclude = fields(new FluentFieldList()).ToList(); return this; diff --git a/src/Nest/DSL/SearchDescriptor.cs b/src/Nest/DSL/SearchDescriptor.cs index 82cdf46ee66..b82868edc63 100644 --- a/src/Nest/DSL/SearchDescriptor.cs +++ b/src/Nest/DSL/SearchDescriptor.cs @@ -305,9 +305,9 @@ public SearchDescriptor Source(bool include = true) return this; } - public SearchDescriptor Source(Func, SourceDescriptor> sourceSelector) + public SearchDescriptor Source(Func, SearchSourceDescriptor> sourceSelector) { - this._Source = sourceSelector(new SourceDescriptor()); + this._Source = sourceSelector(new SearchSourceDescriptor()); return this; } /// diff --git a/src/Nest/DSL/SourceDescriptor.cs b/src/Nest/DSL/SourceDescriptor.cs new file mode 100644 index 00000000000..f91a226996f --- /dev/null +++ b/src/Nest/DSL/SourceDescriptor.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Elasticsearch.Net; +using Newtonsoft.Json; +using System.Linq.Expressions; +using Nest.Resolvers; +using Nest.Domain; + +namespace Nest +{ + [DescriptorFor("GetSource")] + public partial class SourceDescriptor : DocumentPathDescriptorBase,T, SourceQueryString> + , IPathInfo + where T : class + { + + public SourceDescriptor ExecuteOnPrimary() + { + return this.Preference("_primary"); + } + + public SourceDescriptor ExecuteOnLocalShard() + { + return this.Preference("_local"); + } + + + ElasticsearchPathInfo IPathInfo.ToPathInfo(IConnectionSettingsValues settings) + { + var pathInfo = this.ToPathInfo(settings, this._QueryString); + pathInfo.HttpMethod = PathInfoHttpMethod.GET; + + return pathInfo; + + } + } +} diff --git a/src/Nest/DSL/_Descriptors.generated.cs b/src/Nest/DSL/_Descriptors.generated.cs index 7eec8941aff..0b94ec8955b 100644 --- a/src/Nest/DSL/_Descriptors.generated.cs +++ b/src/Nest/DSL/_Descriptors.generated.cs @@ -1545,6 +1545,17 @@ public ExplainDescriptor SourceExclude(params string[] _source_exclude) return this; } + + ///A list of fields to exclude from the returned _source field + public ExplainDescriptor SourceExclude(params Expression>[] typedPathLookups) where T : class + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceExclude(typedPathLookups); + return this; + } + ///A list of fields to extract and return from the _source field public ExplainDescriptor SourceInclude(params string[] _source_include) @@ -1553,6 +1564,17 @@ public ExplainDescriptor SourceInclude(params string[] _source_include) return this; } + + ///A list of fields to extract and return from the _source field + public ExplainDescriptor SourceInclude(params Expression>[] typedPathLookups) where T : class + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceInclude(typedPathLookups); + return this; + } + } @@ -1641,6 +1663,17 @@ public GetDescriptor SourceExclude(params string[] _source_exclude) return this; } + + ///A list of fields to exclude from the returned _source field + public GetDescriptor SourceExclude(params Expression>[] typedPathLookups) + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceExclude(typedPathLookups); + return this; + } + ///A list of fields to extract and return from the _source field public GetDescriptor SourceInclude(params string[] _source_include) @@ -1649,6 +1682,17 @@ public GetDescriptor SourceInclude(params string[] _source_include) return this; } + + ///A list of fields to extract and return from the _source field + public GetDescriptor SourceInclude(params Expression>[] typedPathLookups) + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceInclude(typedPathLookups); + return this; + } + ///Explicit version number for concurrency control public GetDescriptor Version(int version) @@ -1674,13 +1718,13 @@ public GetDescriptor VersionType(VersionTypeOptions version_type) ///http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-get.html /// /// - public partial class GetSourceDescriptor + public partial class SourceDescriptor { - internal GetSourceQueryString _QueryString = new GetSourceQueryString(); + internal SourceQueryString _QueryString = new SourceQueryString(); ///The ID of the parent document - public GetSourceDescriptor Parent(string parent) + public SourceDescriptor Parent(string parent) { this._QueryString.Parent(parent); return this; @@ -1688,7 +1732,7 @@ public GetSourceDescriptor Parent(string parent) ///Specify the node or shard the operation should be performed on (default: random) - public GetSourceDescriptor Preference(string preference) + public SourceDescriptor Preference(string preference) { this._QueryString.Preference(preference); return this; @@ -1696,7 +1740,7 @@ public GetSourceDescriptor Preference(string preference) ///Specify whether to perform the operation in realtime or search mode - public GetSourceDescriptor Realtime(bool realtime = true) + public SourceDescriptor Realtime(bool realtime = true) { this._QueryString.Realtime(realtime); return this; @@ -1704,7 +1748,7 @@ public GetSourceDescriptor Realtime(bool realtime = true) ///Refresh the shard containing the document before performing the operation - public GetSourceDescriptor Refresh(bool refresh = true) + public SourceDescriptor Refresh(bool refresh = true) { this._QueryString.Refresh(refresh); return this; @@ -1712,7 +1756,7 @@ public GetSourceDescriptor Refresh(bool refresh = true) ///Specific routing value - public GetSourceDescriptor Routing(string routing) + public SourceDescriptor Routing(string routing) { this._QueryString.Routing(routing); return this; @@ -1720,7 +1764,7 @@ public GetSourceDescriptor Routing(string routing) ///True or false to return the _source field or not, or a list of fields to return - public GetSourceDescriptor Source(params string[] _source) + public SourceDescriptor Source(params string[] _source) { this._QueryString.Source(_source); return this; @@ -1728,23 +1772,45 @@ public GetSourceDescriptor Source(params string[] _source) ///A list of fields to exclude from the returned _source field - public GetSourceDescriptor SourceExclude(params string[] _source_exclude) + public SourceDescriptor SourceExclude(params string[] _source_exclude) { this._QueryString.SourceExclude(_source_exclude); return this; } + + ///A list of fields to exclude from the returned _source field + public SourceDescriptor SourceExclude(params Expression>[] typedPathLookups) + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceExclude(typedPathLookups); + return this; + } + ///A list of fields to extract and return from the _source field - public GetSourceDescriptor SourceInclude(params string[] _source_include) + public SourceDescriptor SourceInclude(params string[] _source_include) { this._QueryString.SourceInclude(_source_include); return this; } + + ///A list of fields to extract and return from the _source field + public SourceDescriptor SourceInclude(params Expression>[] typedPathLookups) + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceInclude(typedPathLookups); + return this; + } + ///Explicit version number for concurrency control - public GetSourceDescriptor Version(int version) + public SourceDescriptor Version(int version) { this._QueryString.Version(version); return this; @@ -1752,7 +1818,7 @@ public GetSourceDescriptor Version(int version) ///Specific version type - public GetSourceDescriptor VersionType(VersionTypeOptions version_type) + public SourceDescriptor VersionType(VersionTypeOptions version_type) { this._QueryString.VersionType(version_type); return this; @@ -3644,6 +3710,17 @@ public MultiGetDescriptor SourceExclude(params string[] _source_exclude) return this; } + + ///A list of fields to exclude from the returned _source field + public MultiGetDescriptor SourceExclude(params Expression>[] typedPathLookups) where T : class + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceExclude(typedPathLookups); + return this; + } + ///A list of fields to extract and return from the _source field public MultiGetDescriptor SourceInclude(params string[] _source_include) @@ -3652,6 +3729,17 @@ public MultiGetDescriptor SourceInclude(params string[] _source_include) return this; } + + ///A list of fields to extract and return from the _source field + public MultiGetDescriptor SourceInclude(params Expression>[] typedPathLookups) where T : class + { + if (!typedPathLookups.HasAny()) + return this; + + this._QueryString._SourceInclude(typedPathLookups); + return this; + } + } diff --git a/src/Nest/Domain/QueryStringParametersExtensions.Generated.cs b/src/Nest/Domain/QueryStringParametersExtensions.Generated.cs index 4abd9b62078..9f5ea8cfa4a 100644 --- a/src/Nest/Domain/QueryStringParametersExtensions.Generated.cs +++ b/src/Nest/Domain/QueryStringParametersExtensions.Generated.cs @@ -28,6 +28,30 @@ internal static ExplainQueryString _Fields( } + ///A list of fields to exclude from the returned _source field + internal static ExplainQueryString _SourceExclude( + this ExplainQueryString qs, + IEnumerable>> _source_exclude) + where T : class + { + qs.__source_exclude = _source_exclude.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_exclude", qs.__source_exclude); + return qs; + } + + + ///A list of fields to extract and return from the _source field + internal static ExplainQueryString _SourceInclude( + this ExplainQueryString qs, + IEnumerable>> _source_include) + where T : class + { + qs.__source_include = _source_include.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_include", qs.__source_include); + return qs; + } + + ///A comma-separated list of fields to return in the response internal static GetQueryString _Fields( this GetQueryString qs, @@ -40,6 +64,54 @@ internal static GetQueryString _Fields( } + ///A list of fields to exclude from the returned _source field + internal static GetQueryString _SourceExclude( + this GetQueryString qs, + IEnumerable>> _source_exclude) + where T : class + { + qs.__source_exclude = _source_exclude.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_exclude", qs.__source_exclude); + return qs; + } + + + ///A list of fields to extract and return from the _source field + internal static GetQueryString _SourceInclude( + this GetQueryString qs, + IEnumerable>> _source_include) + where T : class + { + qs.__source_include = _source_include.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_include", qs.__source_include); + return qs; + } + + + ///A list of fields to exclude from the returned _source field + internal static SourceQueryString _SourceExclude( + this SourceQueryString qs, + IEnumerable>> _source_exclude) + where T : class + { + qs.__source_exclude = _source_exclude.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_exclude", qs.__source_exclude); + return qs; + } + + + ///A list of fields to extract and return from the _source field + internal static SourceQueryString _SourceInclude( + this SourceQueryString qs, + IEnumerable>> _source_include) + where T : class + { + qs.__source_include = _source_include.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_include", qs.__source_include); + return qs; + } + + ///Use the analyzer configured for this field (instead of passing the analyzer name) internal static AnalyzeQueryString _Field( this AnalyzeQueryString qs, @@ -113,6 +185,30 @@ internal static MultiGetQueryString _Fields( } + ///A list of fields to exclude from the returned _source field + internal static MultiGetQueryString _SourceExclude( + this MultiGetQueryString qs, + IEnumerable>> _source_exclude) + where T : class + { + qs.__source_exclude = _source_exclude.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_exclude", qs.__source_exclude); + return qs; + } + + + ///A list of fields to extract and return from the _source field + internal static MultiGetQueryString _SourceInclude( + this MultiGetQueryString qs, + IEnumerable>> _source_include) + where T : class + { + qs.__source_include = _source_include.Select(e=>(PropertyPathMarker)e); + qs.Add("_source_include", qs.__source_include); + return qs; + } + + ///Specific fields to perform the query against internal static MoreLikeThisQueryString _MltFields( this MoreLikeThisQueryString qs, diff --git a/src/Nest/ElasticClient-IndexExists.cs b/src/Nest/ElasticClient-IndexExists.cs index 4a64e468575..ff718d9e1b9 100644 --- a/src/Nest/ElasticClient-IndexExists.cs +++ b/src/Nest/ElasticClient-IndexExists.cs @@ -19,7 +19,7 @@ public IIndexExistsResponse IndexExists(Func this.RawDispatch.IndicesExistsDispatch( p, new IndexExistConverter(this.DeserializeExistsResponse) - ) + ), allow404: true ); } public Task IndexExistsAsync(Func selector) @@ -29,7 +29,7 @@ public Task IndexExistsAsync(Func this.RawDispatch.IndicesExistsDispatchAsync( p, new IndexExistConverter(this.DeserializeExistsResponse) - ) + ), allow404:true ); } diff --git a/src/Nest/ElasticClient-Percolate.cs b/src/Nest/ElasticClient-Percolate.cs index 214b8858703..a5d8d867879 100644 --- a/src/Nest/ElasticClient-Percolate.cs +++ b/src/Nest/ElasticClient-Percolate.cs @@ -13,7 +13,8 @@ public IUnregisterPercolateResponse UnregisterPercolator(string name, Func s); return this.Dispatch( s => selector(s.Name(name)), - (p, d) => this.RawDispatch.DeleteDispatch(p) + (p, d) => this.RawDispatch.DeleteDispatch(p), + allow404: true ); } @@ -22,7 +23,8 @@ public Task UnregisterPercolatorAsync(string name, selector = selector ?? (s => s); return this.DispatchAsync( s => selector(s.Name(name)), - (p, d) => this.RawDispatch.DeleteDispatchAsync(p) + (p, d) => this.RawDispatch.DeleteDispatchAsync(p), + allow404: true ); } diff --git a/src/Nest/ElasticClient-Search.cs b/src/Nest/ElasticClient-Search.cs index d8926842e4d..912b3d5f481 100644 --- a/src/Nest/ElasticClient-Search.cs +++ b/src/Nest/ElasticClient-Search.cs @@ -35,7 +35,7 @@ public IQueryResponse Search(Func, Sear var pathInfo = ((IPathInfo)descriptor).ToPathInfo(this._connectionSettings); var deserializationState = CreateCovariantSearchSelector(descriptor); var status = this.RawDispatch.SearchDispatch>(pathInfo, descriptor, deserializationState); - return status.Response; + return status.Success ? status.Response : CreateInvalidInstance>(status); } @@ -59,7 +59,8 @@ public Task> SearchAsync(Func)descriptor).ToPathInfo(this._connectionSettings); var deserializationState = CreateCovariantSearchSelector(descriptor); return this.RawDispatch.SearchDispatchAsync>(pathInfo, descriptor, deserializationState) - .ContinueWith>(t=> t.Result.Response); + .ContinueWith>(t=> t.Result.Success ? + t.Result.Response : CreateInvalidInstance>(t.Result)); } private JsonConverter CreateCovariantSearchSelector(SearchDescriptor originalSearchDescriptor) diff --git a/src/Nest/ElasticClient-Source.cs b/src/Nest/ElasticClient-Source.cs index 6388d2aace7..96e44f3df1d 100644 --- a/src/Nest/ElasticClient-Source.cs +++ b/src/Nest/ElasticClient-Source.cs @@ -29,21 +29,21 @@ public Task> SourceFieldsAsync(Func, GetDe ).ContinueWith(t=>t.Result.Fields); } - //TODO replace with actual call to _source in es 1.0 and NEST 1.0 - public T Source(Func, GetDescriptor> getSelector) where T : class + public T Source(Func, SourceDescriptor> getSelector) where T : class { - return this.Dispatch, GetQueryString, GetResponse>( - getSelector, - (p, d) => this.RawDispatch.GetDispatch>(p) - ).Source; + var descriptor = getSelector(new SourceDescriptor()); + var pathInfo = ((IPathInfo)descriptor).ToPathInfo(_connectionSettings); + var response = this.RawDispatch.GetSourceDispatch(pathInfo); + return response.Response; } - public Task SourceAsync(Func, GetDescriptor> getSelector) where T : class + public Task SourceAsync(Func, SourceDescriptor> getSelector) where T : class { - return this.DispatchAsync, GetQueryString, GetResponse, IGetResponse>( - getSelector, - (p, d) => this.RawDispatch.GetDispatchAsync>(p) - ).ContinueWith(t=>t.Result.Source); + var descriptor = getSelector(new SourceDescriptor()); + var pathInfo = ((IPathInfo)descriptor).ToPathInfo(_connectionSettings); + var response = this.RawDispatch.GetSourceDispatchAsync(pathInfo) + .ContinueWith(t=>t.Result.Response); + return response; } diff --git a/src/Nest/ElasticClient.cs b/src/Nest/ElasticClient.cs index 06053c78c25..12285bc11da 100644 --- a/src/Nest/ElasticClient.cs +++ b/src/Nest/ElasticClient.cs @@ -48,7 +48,6 @@ public ElasticClient(IConnectionSettingsValues settings, IConnection connection private R Dispatch( Func selector , Func, D, ElasticsearchResponse> dispatch - , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -57,14 +56,13 @@ Func selector { selector.ThrowIfNull("selector"); var descriptor = selector(new D()); - return Dispatch(descriptor, dispatch, resultSelector, allow404); + return Dispatch(descriptor, dispatch, allow404); } private R Dispatch( D descriptor , Func, D, ElasticsearchResponse> dispatch - , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -72,15 +70,25 @@ D descriptor where R : BaseResponse { var pathInfo = descriptor.ToPathInfo(this._connectionSettings); - resultSelector = resultSelector ?? ((c, d) => c.Response); + Func, D, R> resultSelector = + ((c, d) => c.Success || allow404 && c.HttpStatusCode == 404 ? c.Response : CreateInvalidInstance(c)); var response = dispatch(pathInfo, descriptor); return resultSelector(response, descriptor); } + + + private static R CreateInvalidInstance(IElasticsearchResponse response) where R : BaseResponse + { + var r = (R)typeof(R).CreateInstance(); + r.ConnectionStatus = response; + r.IsValid = false; + return r; + } + internal Task DispatchAsync( Func selector , Func, D, Task>> dispatch - , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -90,13 +98,12 @@ Func selector { selector.ThrowIfNull("selector"); var descriptor = selector(new D()); - return DispatchAsync(descriptor, dispatch, resultSelector, allow404); + return DispatchAsync(descriptor, dispatch, allow404); } private Task DispatchAsync( D descriptor , Func, D, Task>> dispatch - , Func, D, R> resultSelector = null , bool allow404 = false ) where Q : FluentQueryString, new() @@ -105,7 +112,8 @@ D descriptor where I : IResponse { var pathInfo = descriptor.ToPathInfo(this._connectionSettings); - resultSelector = resultSelector ?? ((c, d) => c.Response); + Func, D, R> resultSelector = + ((c, d) => c.Success || allow404 && c.HttpStatusCode == 404 ? c.Response : CreateInvalidInstance(c)); return dispatch(pathInfo, descriptor) .ContinueWith(r => resultSelector(r.Result, descriptor)); } diff --git a/src/Nest/IElasticClient.cs b/src/Nest/IElasticClient.cs index 0d2b723dc17..40a950a2234 100644 --- a/src/Nest/IElasticClient.cs +++ b/src/Nest/IElasticClient.cs @@ -133,8 +133,8 @@ Task IndexAsync(T @object, Func, IndexDesc Task MultiGetAsync(Func multiGetSelector); FieldSelection SourceFields(Func, GetDescriptor> getSelector) where T : class; Task> SourceFieldsAsync(Func, GetDescriptor> getSelector) where T : class; - T Source(Func, GetDescriptor> getSelector) where T : class; - Task SourceAsync(Func, GetDescriptor> getSelector) where T : class; + T Source(Func, SourceDescriptor> getSelector) where T : class; + Task SourceAsync(Func, SourceDescriptor> getSelector) where T : class; IGetResponse Get(Func, GetDescriptor> getSelector) where T : class; Task> GetAsync(Func, GetDescriptor> getSelector) where T : class; IIndicesOperationResponse Alias(Func aliasSelector); diff --git a/src/Nest/Nest.csproj b/src/Nest/Nest.csproj index b66d9164e95..17d1bcfcd6a 100644 --- a/src/Nest/Nest.csproj +++ b/src/Nest/Nest.csproj @@ -155,6 +155,7 @@ + diff --git a/src/Nest/RawDispatch.generated.cs b/src/Nest/RawDispatch.generated.cs index fab0c7bcc89..8875308afca 100644 --- a/src/Nest/RawDispatch.generated.cs +++ b/src/Nest/RawDispatch.generated.cs @@ -960,7 +960,7 @@ internal Task> GetDispatchAsync(ElasticsearchPathInf } - internal ElasticsearchResponse GetSourceDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) + internal ElasticsearchResponse GetSourceDispatch(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { @@ -975,7 +975,7 @@ internal ElasticsearchResponse GetSourceDispatch(ElasticsearchPathInfo> GetSourceDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) + internal Task> GetSourceDispatchAsync(ElasticsearchPathInfo pathInfo , object deserializationState = null) { switch(pathInfo.HttpMethod) { diff --git a/src/Tests/Nest.Tests.Integration/ConnectionTests.cs b/src/Tests/Nest.Tests.Integration/ConnectionTests.cs index fffc79a52a1..5e6c1585f50 100644 --- a/src/Tests/Nest.Tests.Integration/ConnectionTests.cs +++ b/src/Tests/Nest.Tests.Integration/ConnectionTests.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using Elasticsearch.Net; +using Elasticsearch.Net.Exceptions; using NUnit.Framework; using Nest; @@ -60,14 +61,15 @@ public void connect_to_unknown_hostname() { IRootInfoResponse result = null; - Assert.DoesNotThrow(() => + Assert.Throws(() => { var settings = new ConnectionSettings(new Uri("http://youdontownthis.domain.do.you"), "index"); var client = new ElasticClient(settings); result = client.RootNodeInfo(); + Assert.False(result.IsValid); + Assert.NotNull(result.ConnectionStatus); }); - Assert.False(result.IsValid); - Assert.NotNull(result.ConnectionStatus); + } [Test] public void TestConnectSuccessWithUri() diff --git a/src/Tests/Nest.Tests.Integration/Core/Get/GetMultiTests.cs b/src/Tests/Nest.Tests.Integration/Core/Get/GetMultiTests.cs index 0ac5768ad99..e688981bde0 100644 --- a/src/Tests/Nest.Tests.Integration/Core/Get/GetMultiTests.cs +++ b/src/Tests/Nest.Tests.Integration/Core/Get/GetMultiTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Nest.Tests.MockData; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -17,19 +18,21 @@ namespace Nest.Tests.Integration.Core.Get [TestFixture] public class GetMultiTests : IntegrationTests { + + [Test] public void GetMultiSimple() { var result = this._client.MultiGet(a => a - .Get(g=>g.Id(1)) - .Get(g => g.Id(100)) + .Get(g=>g.Id(NestTestData.Data[1].Id)) + .Get(g => g.Id(NestTestData.People[1].Id)) ); var objects = result.Documents; objects.Should().NotBeNull().And.HaveCount(2); - var person = result.Source(100); + var person = result.Source(NestTestData.People[1].Id); person.Should().NotBeNull(); person.FirstName.Should().NotBeNullOrEmpty(); @@ -38,24 +41,28 @@ public void GetMultiSimple() [Test] public void GetMultiSimpleWithMissingItem() { + var project = -200; + var frank = -204; + var lewisId = NestTestData.People[5].Id; + var result = this._client.MultiGet(a => a - .Get(g => g.Id(1)) - .Get(g => g.Id(100000)) - .Get(g => g.Id(105)) + .Get(g => g.Id(project)) + .Get(g => g.Id(frank)) + .Get(g => g.Id(lewisId)) ); var objects = result.Documents; objects.Should().NotBeNull() .And.HaveCount(3); - var missingPerson = result.Get(100000); + var missingPerson = result.Get(project); missingPerson.Should().NotBeNull(); missingPerson.Found.Should().BeFalse(); - var missingPersonDirect = result.Source(100000); + var missingPersonDirect = result.Source(frank); missingPersonDirect.Should().BeNull(); - var lewis = result.Source(105); + var lewis = result.Source(lewisId); lewis.Should().NotBeNull(); lewis.FirstName.Should().NotBeNullOrEmpty(); } @@ -63,9 +70,12 @@ public void GetMultiSimpleWithMissingItem() [Test] public void GetMultiWithMetaData() { + var projectId = NestTestData.Data[14].Id; + var authorId = NestTestData.People[11].Id; + var result = this._client.MultiGet(a => a - .Get(g => g.Id(1).Fields(p=>p.Id, p=>p.Followers.First().FirstName)) - .Get(g => g.Id(100).Type("person").Index(ElasticsearchConfiguration.DefaultIndex).Fields(p => p.Id, p => p.FirstName)) + .Get(g => g.Id(projectId).Fields(p=>p.Id, p=>p.Followers.First().FirstName)) + .Get(g => g.Id(authorId).Type("person").Index(ElasticsearchConfiguration.DefaultIndex).Fields(p => p.Id, p => p.FirstName)) ); var objects = result.Documents; @@ -75,14 +85,14 @@ public void GetMultiWithMetaData() var people = objects.OfType>(); people.Should().HaveCount(1); - var personHit = people.FirstOrDefault(p => p.Id == "100"); + var personHit = people.FirstOrDefault(p => p.Id == authorId.ToString()); personHit.Should().NotBeNull(); personHit.Found.Should().BeTrue(); personHit.Version.Should().NotBeNullOrEmpty().And.Match("1"); var person = personHit.FieldSelection; person.Should().NotBeNull(); - person.FieldValue(p=>p.Id).Should().BeEquivalentTo(new []{100}); + person.FieldValue(p=>p.Id).Should().BeEquivalentTo(new []{authorId}); person.FieldValue(p => p.FirstName) .Should().NotBeEmpty(); @@ -91,31 +101,34 @@ public void GetMultiWithMetaData() [Test] public void GetMultiWithMetaDataUsingCleanApi() { + var projectId = NestTestData.Data[8].Id; + var authorId = NestTestData.People[5].Id; + var result = this._client.MultiGet(a => a - .Get(g => g.Id(1).Fields(p => p.Id, p => p.Followers.First().FirstName)) + .Get(g => g.Id(projectId).Fields(p => p.Id, p => p.Followers.First().FirstName)) .Get(g => g - .Id(100) + .Id(authorId) .Type("person") .Index(ElasticsearchConfiguration.DefaultIndex) .Fields(p => p.Id, p => p.FirstName) ) ); - var personHit = result.Get(100); + var personHit = result.Get(authorId); personHit.Should().NotBeNull(); personHit.Found.Should().BeTrue(); personHit.Version.Should().NotBeNullOrEmpty().And.Match("1"); //personHit.FieldSelection would work too - var personFieldSelection = result.GetFieldSelection(100); + var personFieldSelection = result.GetFieldSelection(authorId); personFieldSelection.Should().NotBeNull(); - personFieldSelection.FieldValue(p => p.Id).Should().BeEquivalentTo(new []{100}); + personFieldSelection.FieldValue(p => p.Id).Should().BeEquivalentTo(new []{authorId}); personFieldSelection.FieldValue(p => p.FirstName) .Should().NotBeEmpty(); - var projectFieldSelection = result.GetFieldSelection(1); + var projectFieldSelection = result.GetFieldSelection(projectId); projectFieldSelection.Should().NotBeNull(); - projectFieldSelection.FieldValue(p => p.Id).Should().BeEquivalentTo(new []{1}); + projectFieldSelection.FieldValue(p => p.Id).Should().BeEquivalentTo(new []{projectId}); projectFieldSelection.FieldValue(p => p.Followers.First().FirstName) .Should().NotBeEmpty(); diff --git a/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs b/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs index 148e3e220bb..2913f14108a 100644 --- a/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs +++ b/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs @@ -19,7 +19,8 @@ public static ConnectionSettings Settings(int? port = null) return new ConnectionSettings(uri, ElasticsearchConfiguration.DefaultIndex) .SetMaximumAsyncConnections(Test.Default.MaximumAsyncConnections) - .UsePrettyResponses(); + .UsePrettyResponses() + .ExposeRawResponse(); } public static readonly ElasticClient Client = new ElasticClient(Settings()); diff --git a/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs b/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs index d42fed367c0..4ecde991260 100644 --- a/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs +++ b/src/Tests/Nest.Tests.Integration/Indices/OpenCloseTests.cs @@ -33,11 +33,10 @@ public void CloseAndSearchAndOpenIndex() var r = this._client.CloseIndex(ElasticsearchConfiguration.DefaultIndex); Assert.True(r.Acknowledged); Assert.True(r.IsValid); - var results = this.SearchRaw( - @" { ""query"" : { - ""match_all"" : { } - } }" + var results = this._client.Search(s => s + .MatchAll() ); + Assert.False(results.IsValid); Assert.IsNotNull(results.ConnectionStatus.Error); Assert.True(results.ConnectionStatus.Error.HttpStatusCode == System.Net.HttpStatusCode.Forbidden, results.ConnectionStatus.Error.HttpStatusCode.ToString()); diff --git a/src/Tests/Nest.Tests.Integration/IntegrationTests.cs b/src/Tests/Nest.Tests.Integration/IntegrationTests.cs index 3f43bfaffb4..7ab238d03f5 100644 --- a/src/Tests/Nest.Tests.Integration/IntegrationTests.cs +++ b/src/Tests/Nest.Tests.Integration/IntegrationTests.cs @@ -46,7 +46,7 @@ public void DoFilterTest(Func, Nest.BaseF Assert.True(results.IsValid, rawResponse); Assert.True(results.ConnectionStatus.Success, rawResponse); - Assert.AreEqual(queryMustHaveResults ? 1 : 0, rawResponse); + Assert.AreEqual(queryMustHaveResults ? 1 : 0, results.Total); } } diff --git a/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs b/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs index 01c2971beac..eafacdeee0c 100644 --- a/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs +++ b/src/Tests/Nest.Tests.Integration/Search/SearchType/SearchTypeScanTests.cs @@ -22,8 +22,7 @@ public void SearchTypeScanWithoutScrollIsInvalid() .SearchType(SearchTypeOptions.Scan) ); Assert.False(queryResults.IsValid); - StringAssert.Contains("Scroll must be provided when scanning", - queryResults.ConnectionStatus.ResponseRaw.Utf8String()); + StringAssert.Contains("Scroll must be provided when scanning", queryResults.ConnectionStatus.ResponseRaw.Utf8String()); } [Test] public void SearchTypeScan() diff --git a/src/Tests/Nest.Tests.MockData/NestTestData.cs b/src/Tests/Nest.Tests.MockData/NestTestData.cs index 0dfb786b7e3..2ed968521c7 100644 --- a/src/Tests/Nest.Tests.MockData/NestTestData.cs +++ b/src/Tests/Nest.Tests.MockData/NestTestData.cs @@ -13,9 +13,9 @@ namespace Nest.Tests.MockData { public static class NestTestData { - private static IEnumerable _People { get; set; } - private static IEnumerable _BoolTerms { get; set; } - private static IEnumerable _Data { get; set; } + private static IList _People { get; set; } + private static IList _BoolTerms { get; set; } + private static IList _Data { get; set; } public static IGenerationSession _Session { get; set; } public static IGenerationSession Session { @@ -69,7 +69,7 @@ public static IGenerationSession Session } } - public static IEnumerable People + public static IList People { get { @@ -81,7 +81,7 @@ public static IEnumerable People } } - public static IEnumerable BoolTerms + public static IList BoolTerms { get { @@ -93,7 +93,7 @@ public static IEnumerable BoolTerms } } - public static IEnumerable Data + public static IList Data { get { diff --git a/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs b/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs index 8afd6c89859..33cd37b156b 100644 --- a/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs +++ b/src/Tests/Nest.Tests.Unit/BigBadUrlUnitTests.cs @@ -42,65 +42,65 @@ private class OtherDoc [Test] public void TestAllTheUrls() { - //Do("POST", "/_aliases", c => c.Alias(a => a)); - //Do("GET", "/_analyze", c => c.Analyze(a => a)); - //Do("GET", "/myindex/_analyze", c => c.Analyze(a => a.Index("myindex"))); - //Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); - //Do("POST", "/myindex/mytype/_bulk", c => c.Bulk(b => b.FixedPath("myindex", "mytype").Index(ib => ib.Object(new Doc { Id = "1" })))); - //Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); - //Do("POST", "/_bulk", c => c.Bulk(b => b.Index(ib => ib.Object(new Doc { Id = "1" })))); - //Do("POST", "/_cache/clear", c => c.ClearCache()); - //Do("POST", "/mydefaultindex/_cache/clear", c => c.ClearCache(cc => cc.Index())); - //Do("POST", "/mydefaultindex/_close", c => c.CloseIndex(ci => ci.Index())); - //Do("GET", "/_nodes", c => c.NodesInfo()); - //Do("GET", "/_nodes/insert-marvel-character", c => c.NodesInfo(cn => cn.NodeId("insert-marvel-character"))); - //Do("GET", "/_nodes/stats", c => c.NodesStats()); - //Do("GET", "/_nodes/insert-marvel-character/stats/jvm", c => c - // .NodesStats(cn => cn.NodeId("insert-marvel-character").Metrics(NodesStatsMetric.Jvm))); - //Do("GET", "/_cluster/state", c => c.ClusterState()); - //Do("GET", "/_cluster/state?local=true", c => c.ClusterState(cs => cs.Local())); - //Do("POST", "/_count", c => c.Count()); - //Do("POST", "/_all/doc/_count", c => c.Count(cc => cc.AllIndices().Type())); - //Do("POST", "/mydefaultindex/doc/_count", c => c.Count(cc => cc.Index().Type())); - //Do("POST", "/mydefaultindex/_count", c => c.Count(cc => cc.Index())); - //Do("POST", "/mydefaultindex/doc/_count", c => c.Count()); - //Do("POST", "/customindex/doc/_count", c => c.Count(cc => cc.Index("customindex"))); - //Do("POST", "/new-index-name", c => c.CreateIndex("new-index-name")); - //Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(d => d.Id("1"))); - //Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(1)); - //Do("DELETE", "/customindex/doc/1", c => c.Delete(d => d.Index("customindex").Id(1))); - //Do("DELETE", "/customindex/doc/1", c => c.Delete(1, d => d.Index("customindex"))); - //Do("DELETE", "/mydefaultindex/doc/_query", c => c.DeleteByQuery(q => q.MatchAll())); - //Do("DELETE", "/customindex/doc/_query", c => c.DeleteByQuery(q => q.Index("customindex").MatchAll())); - //Do("DELETE", "/_all/doc/_query", c => c.DeleteByQuery(q => q.AllIndices().MatchAll())); - //Do("DELETE", "/mydefaultindex/_query", c => c.DeleteByQuery(q => q.AllTypes().MatchAll())); - //Do("DELETE", "/mydefaultindex", c => c.DeleteIndex(i => i.Index())); - //Do("DELETE", "/a%2Cb", c => c.DeleteIndex(i => i.Indices("a", "b"))); - //Do("POST", "/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }))); - //Do("POST", "/customindex/customtype/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }), index: "customindex", type: "customtype")); - //Do("DELETE", "/mydefaultindex/doc/_mapping", c => c.DeleteMapping(d => d.Index().Type())); - //Do("DELETE", "/_template/myTemplate", c => c.DeleteTemplate("myTemplate")); - //Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.AllIndices())); - //Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer")); - //Do("DELETE", "/mycustomindex/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.Index("mycustomindex"))); - //Do("POST", "/_all/_flush", c => c.Flush(f => f.AllIndices())); - //Do("POST", "/mycustomindex/_flush", c => c.Flush(f => f.Index("mycustomindex"))); - //Do("GET", "/mydefaultindex/doc/1", c => c.Get(1)); - //Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(1, index: "mycustomindex", type: "mycustomtype")); - //Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(g => g.Id(1).Index("mycustomindex").Type("mycustomtype"))); - //Do("GET", "/mydefaultindex/_alias/*", c => c.GetAliases(a => a.Index())); - //Do("GET", "/_alias/prefix-*", c => c.GetAliases(a => a.Alias("prefix-*"))); - //Do("GET", "/mydefaultindex/_settings", c => c.GetIndexSettings(i => i.Index())); - //Do("GET", "/mydefaultindex/_mapping/doc", c => c.GetMapping()); - //Do("GET", "/mycustomindex/_mapping/doc", c => c.GetMapping(m => m.Index("mycustomindex"))); - //Do("GET", "/mycustomindex/_mapping/sometype", c => c.GetMapping(m => m.Index("mycustomindex").Type("sometype"))); - //Do("GET", "/_template/mytemplate", c => c.GetTemplate("mytemplate")); - //Do("GET", "/_all/_warmer/mywarmer", c => c.GetWarmer("mywarmer")); - //Do("GET", "/mycustomindex/_warmer/mywarmer", c => c.GetWarmer("mywarmer", g => g.Index("mycustomindex"))); - //Do("GET", "/_cluster/health?level=indices", c => c.Health(h => h.Level(LevelOptions.Indices))); - //Do("GET", "/_cluster/health", c => c.Health()); - //Do("POST", "/mydefaultindex/doc/2", c => c.Index(new Doc { Id = "2" })); - //Do("POST", "/customindex/customtype/2?refresh=true", c => c.Index(new Doc { Id = "2" }, i => i.Index("customindex").Type("customtype").Refresh())); + Do("POST", "/_aliases", c => c.Alias(a => a)); + Do("GET", "/_analyze", c => c.Analyze(a => a)); + Do("GET", "/myindex/_analyze", c => c.Analyze(a => a.Index("myindex"))); + Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); + Do("POST", "/myindex/mytype/_bulk", c => c.Bulk(b => b.FixedPath("myindex", "mytype").Index(ib => ib.Object(new Doc { Id = "1" })))); + Do("POST", "/myindex/_bulk", c => c.Bulk(b => b.FixedPath("myindex").Index(ib => ib.Object(new Doc { Id = "1" })))); + Do("POST", "/_bulk", c => c.Bulk(b => b.Index(ib => ib.Object(new Doc { Id = "1" })))); + Do("POST", "/_cache/clear", c => c.ClearCache()); + Do("POST", "/mydefaultindex/_cache/clear", c => c.ClearCache(cc => cc.Index())); + Do("POST", "/mydefaultindex/_close", c => c.CloseIndex(ci => ci.Index())); + Do("GET", "/_nodes", c => c.NodesInfo()); + Do("GET", "/_nodes/insert-marvel-character", c => c.NodesInfo(cn => cn.NodeId("insert-marvel-character"))); + Do("GET", "/_nodes/stats", c => c.NodesStats()); + Do("GET", "/_nodes/insert-marvel-character/stats/jvm", c => c + .NodesStats(cn => cn.NodeId("insert-marvel-character").Metrics(NodesStatsMetric.Jvm))); + Do("GET", "/_cluster/state", c => c.ClusterState()); + Do("GET", "/_cluster/state?local=true", c => c.ClusterState(cs => cs.Local())); + Do("POST", "/_count", c => c.Count()); + Do("POST", "/_all/doc/_count", c => c.Count(cc => cc.AllIndices().Type())); + Do("POST", "/mydefaultindex/doc/_count", c => c.Count(cc => cc.Index().Type())); + Do("POST", "/mydefaultindex/_count", c => c.Count(cc => cc.Index())); + Do("POST", "/mydefaultindex/doc/_count", c => c.Count()); + Do("POST", "/customindex/doc/_count", c => c.Count(cc => cc.Index("customindex"))); + Do("POST", "/new-index-name", c => c.CreateIndex("new-index-name")); + Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(d => d.Id("1"))); + Do("DELETE", "/mydefaultindex/doc/1", c => c.Delete(1)); + Do("DELETE", "/customindex/doc/1", c => c.Delete(d => d.Index("customindex").Id(1))); + Do("DELETE", "/customindex/doc/1", c => c.Delete(1, d => d.Index("customindex"))); + Do("DELETE", "/mydefaultindex/doc/_query", c => c.DeleteByQuery(q => q.MatchAll())); + Do("DELETE", "/customindex/doc/_query", c => c.DeleteByQuery(q => q.Index("customindex").MatchAll())); + Do("DELETE", "/_all/doc/_query", c => c.DeleteByQuery(q => q.AllIndices().MatchAll())); + Do("DELETE", "/mydefaultindex/_query", c => c.DeleteByQuery(q => q.AllTypes().MatchAll())); + Do("DELETE", "/mydefaultindex", c => c.DeleteIndex(i => i.Index())); + Do("DELETE", "/a%2Cb", c => c.DeleteIndex(i => i.Indices("a", "b"))); + Do("POST", "/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }))); + Do("POST", "/customindex/customtype/_bulk", c => c.DeleteMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }), index: "customindex", type: "customtype")); + Do("DELETE", "/mydefaultindex/doc/_mapping", c => c.DeleteMapping(d => d.Index().Type())); + Do("DELETE", "/_template/myTemplate", c => c.DeleteTemplate("myTemplate")); + Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.AllIndices())); + Do("DELETE", "/_all/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer")); + Do("DELETE", "/mycustomindex/_warmer/mywarmer", c => c.DeleteWarmer("mywarmer", w => w.Index("mycustomindex"))); + Do("POST", "/_all/_flush", c => c.Flush(f => f.AllIndices())); + Do("POST", "/mycustomindex/_flush", c => c.Flush(f => f.Index("mycustomindex"))); + Do("GET", "/mydefaultindex/doc/1", c => c.Get(1)); + Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(1, index: "mycustomindex", type: "mycustomtype")); + Do("GET", "/mycustomindex/mycustomtype/1", c => c.Get(g => g.Id(1).Index("mycustomindex").Type("mycustomtype"))); + Do("GET", "/mydefaultindex/_alias/*", c => c.GetAliases(a => a.Index())); + Do("GET", "/_alias/prefix-*", c => c.GetAliases(a => a.Alias("prefix-*"))); + Do("GET", "/mydefaultindex/_settings", c => c.GetIndexSettings(i => i.Index())); + Do("GET", "/mydefaultindex/_mapping/doc", c => c.GetMapping()); + Do("GET", "/mycustomindex/_mapping/doc", c => c.GetMapping(m => m.Index("mycustomindex"))); + Do("GET", "/mycustomindex/_mapping/sometype", c => c.GetMapping(m => m.Index("mycustomindex").Type("sometype"))); + Do("GET", "/_template/mytemplate", c => c.GetTemplate("mytemplate")); + Do("GET", "/_all/_warmer/mywarmer", c => c.GetWarmer("mywarmer")); + Do("GET", "/mycustomindex/_warmer/mywarmer", c => c.GetWarmer("mywarmer", g => g.Index("mycustomindex"))); + Do("GET", "/_cluster/health?level=indices", c => c.Health(h => h.Level(LevelOptions.Indices))); + Do("GET", "/_cluster/health", c => c.Health()); + Do("POST", "/mydefaultindex/doc/2", c => c.Index(new Doc { Id = "2" })); + Do("POST", "/customindex/customtype/2?refresh=true", c => c.Index(new Doc { Id = "2" }, i => i.Index("customindex").Type("customtype").Refresh())); Do("HEAD", "/mydefaultindex", c => c.IndexExists(h => h.Index())); Do("POST", "/_bulk", c => c.IndexMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }))); Do("POST", "/customindex/customtype/_bulk", c => c.IndexMany(Enumerable.Range(0, 10).Select(i => new Doc { Id = i.ToString() }), index: "customindex", type: "customtype")); @@ -141,10 +141,9 @@ public void TestAllTheUrls() Do("GET", "/mycustomindex/_segments", c => c.Segments(s => s.Index("mycustomindex"))); Do("POST", "/_gateway/snapshot", c => c.Snapshot()); Do("POST", "/mydefaultindex/_gateway/snapshot", c => c.Snapshot(s => s.Index())); - //no _source here just yet, _source = 0.90.1 and up. - Do("GET", "/mydefaultindex/doc/1", c => c.Source(1)); - Do("GET", "/mycustomindex/mytype/1", c => c.Source(1, index: "mycustomindex", type: "mytype")); - Do("GET", "/mycustomindex/doc/1", c => c.Source(s => s.Id(1).Index("mycustomindex"))); + Do("GET", "/mydefaultindex/doc/1/_source", c => c.Source(1)); + Do("GET", "/mycustomindex/mytype/1/_source", c => c.Source(1, index: "mycustomindex", type: "mytype")); + Do("GET", "/mycustomindex/doc/1/_source", c => c.Source(s => s.Id(1).Index("mycustomindex"))); Do("GET", "/mydefaultindex/doc/1?fields=id", c => c.SourceFields(g => g.Id(1).Fields(f => f.Id))); Do("GET", "/_status", c => c.Status()); Do("GET", "/mydefaultindex/_status", c => c.Status(s => s.Index())); From 8af52ad1cb80e395bef86389618ed7d8d958ceaa Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 20 Mar 2014 10:01:13 +0100 Subject: [PATCH 09/12] fixed the yaml tests (cat tests are still broken but work on that will have to be done on its own feature branch) --- .../ElasticsearchClient.Generated.cshtml | 10 +- .../Connection/HttpConnection.cs | 8 +- .../Domain/DynamicDictionary.cs | 2 +- .../Domain/ElasticsearchDynamicValue.cs | 1 + .../Domain/ElasticsearchResponse.cs | 36 +- .../ElasticsearchClient.Generated.cs | 1824 ++++++++--------- .../ElasticsearchDefaultSerializer.cs | 9 +- .../Profiling.InMemoryConnection/Program.cs | 5 +- .../YamlTestsBase.cs | 26 +- .../Connection/RetryTests.cs | 4 +- .../Connection/SniffingConnectionPoolTests.cs | 2 +- .../StaticConnectionPoolRetryTests.cs | 30 +- .../Stubs/FakeCalls.cs | 10 +- .../Stubs/FakeResponse.cs | 13 +- .../Nest.Tests.Integration/ConnectionTests.cs | 2 + 15 files changed, 1020 insertions(+), 962 deletions(-) diff --git a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml index 9c5accef6c1..5c3b17467a2 100644 --- a/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml +++ b/src/CodeGeneration/CodeGeneration.LowLevelClient/Views/ElasticsearchClient.Generated.cshtml @@ -69,15 +69,17 @@ namespace Elasticsearch.Net var qs = queryString(new @(method.QueryStringParamName)()); if (qs != null) nv = this.ToNameValueCollection(qs); } - @{ - string requestMethod = method.ReturnType.StartsWith("Task<") ? "DoRequestAsync" : "DoRequest"; + @{ + bool isAsync = method.ReturnType.StartsWith("Task<"); + string requestMethod = isAsync ? "DoRequestAsync" : "DoRequest"; + bool wrap = method.ReturnTypeGeneric == null; } - return this.@(requestMethod)@(Raw(method.ReturnTypeGeneric ?? ""))("@method.HttpMethod", url@(method.Parts.Any(pp=>pp.Name == "body") ? ", body" : ", data: null"), + return @(wrap ? "ElasticsearchResponse.Wrap"+ (isAsync ? "Async" : "") +"(" : "")this.@(requestMethod)@(Raw(method.ReturnTypeGeneric ?? ">"))("@method.HttpMethod", url@(method.Parts.Any(pp=>pp.Name == "body") ? ", body" : ", data: null"), queryString: nv @if(!string.IsNullOrWhiteSpace(method.ReturnTypeGeneric)) { , deserializationState: deserializationState - } ); + } )@(wrap ? ")" : ""); } } diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 62639680a20..e2cfd89e77b 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -235,10 +235,10 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebReques return cs; } - cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); - tracer.SetResult(cs); - _ConnectionSettings.ConnectionStatusHandler(cs); - return cs; + cs = ElasticsearchResponse.CreateError(this._ConnectionSettings, webException, method, path, data); + tracer.SetResult(cs); + _ConnectionSettings.ConnectionStatusHandler(cs); + return cs; } } diff --git a/src/Elasticsearch.Net/Domain/DynamicDictionary.cs b/src/Elasticsearch.Net/Domain/DynamicDictionary.cs index a28c84f0fd3..818047d939c 100644 --- a/src/Elasticsearch.Net/Domain/DynamicDictionary.cs +++ b/src/Elasticsearch.Net/Domain/DynamicDictionary.cs @@ -40,7 +40,7 @@ public static DynamicDictionary Empty public static DynamicDictionary Create(IDictionary values) { var instance = new DynamicDictionary(); - + foreach (var key in values.Keys) { instance[key] = values[key]; diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchDynamicValue.cs b/src/Elasticsearch.Net/Domain/ElasticsearchDynamicValue.cs index 62523eb02c3..b3a75539fa8 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchDynamicValue.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchDynamicValue.cs @@ -675,6 +675,7 @@ public object ToType(Type conversionType, IFormatProvider provider) } #endregion + } } diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index da6389b5ab2..e43d0743442 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -8,6 +8,7 @@ using System.Text.RegularExpressions; using System.IO; using System.Net; +using System.Threading.Tasks; using Elasticsearch.Net; using Elasticsearch.Net.Connection; using Elasticsearch.Net.Serialization; @@ -31,6 +32,39 @@ public interface IElasticsearchResponse byte[] ResponseRaw { get; } } + internal static class ElasticsearchResponse + { + + public static Task> WrapAsync(Task>> responseTask) + { + return responseTask + .ContinueWith(t=>ToDynamicResponse(t.Result)); + } + + public static ElasticsearchResponse Wrap(ElasticsearchResponse> response) + { + return ToDynamicResponse(response); + } + + private static ElasticsearchResponse ToDynamicResponse(ElasticsearchResponse> response) + { + return new ElasticsearchResponse(response.Settings) + { + Error = response.Error, + HttpStatusCode = response.HttpStatusCode, + Request = response.Request, + RequestMethod = response.RequestMethod, + RequestUrl = response.RequestUrl, + Response = response.Response != null ? DynamicDictionary.Create(response.Response) : null, + ResponseRaw = response.ResponseRaw, + Serializer = response.Serializer, + Settings = response.Settings, + Success = response.Success + }; + } + } + + public class ElasticsearchResponse : IElasticsearchResponse { protected static readonly string _printFormat; @@ -72,7 +106,7 @@ internal bool SuccessOrKnownError } - protected ElasticsearchResponse(IConnectionConfigurationValues settings) + protected internal ElasticsearchResponse(IConnectionConfigurationValues settings) { this.Settings = settings; this.Serializer = settings.Serializer; diff --git a/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs b/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs index b33bd8fccdf..e13dbc2e20d 100644 --- a/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs +++ b/src/Elasticsearch.Net/ElasticsearchClient.Generated.cs @@ -98,9 +98,9 @@ public ElasticsearchResponse Bulk(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_bulk @@ -127,9 +127,9 @@ public Task> BulkAsync(object body, Fun if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_bulk @@ -220,9 +220,9 @@ public ElasticsearchResponse Bulk(string index, object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_bulk @@ -251,9 +251,9 @@ public Task> BulkAsync(string index, ob if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_bulk @@ -350,9 +350,9 @@ public ElasticsearchResponse Bulk(string index, string type, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_bulk @@ -383,9 +383,9 @@ public Task> BulkAsync(string index, st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_bulk @@ -470,9 +470,9 @@ public ElasticsearchResponse BulkPut(object body, Func("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_bulk @@ -499,9 +499,9 @@ public Task> BulkPutAsync(object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_bulk @@ -592,9 +592,9 @@ public ElasticsearchResponse BulkPut(string index, object bod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_bulk @@ -623,9 +623,9 @@ public Task> BulkPutAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/_bulk @@ -722,9 +722,9 @@ public ElasticsearchResponse BulkPut(string index, string typ if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/_bulk @@ -755,9 +755,9 @@ public Task> BulkPutAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a GET on /_cat/aliases @@ -839,9 +839,9 @@ public ElasticsearchResponse CatAliases(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/aliases @@ -867,9 +867,9 @@ public Task> CatAliasesAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/aliases/{name} @@ -957,9 +957,9 @@ public ElasticsearchResponse CatAliases(string name, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/aliases/{name} @@ -987,9 +987,9 @@ public Task> CatAliasesAsync(string nam if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/allocation @@ -1071,9 +1071,9 @@ public ElasticsearchResponse CatAllocation(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/allocation @@ -1099,9 +1099,9 @@ public Task> CatAllocationAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/allocation/{node_id} @@ -1189,9 +1189,9 @@ public ElasticsearchResponse CatAllocation(string node_id, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/allocation/{node_id} @@ -1219,9 +1219,9 @@ public Task> CatAllocationAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/count @@ -1303,9 +1303,9 @@ public ElasticsearchResponse CatCount(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/count @@ -1331,9 +1331,9 @@ public Task> CatCountAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/count/{index} @@ -1421,9 +1421,9 @@ public ElasticsearchResponse CatCount(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/count/{index} @@ -1451,9 +1451,9 @@ public Task> CatCountAsync(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/health @@ -1535,9 +1535,9 @@ public ElasticsearchResponse CatHealth(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/health @@ -1563,9 +1563,9 @@ public Task> CatHealthAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat @@ -1647,9 +1647,9 @@ public ElasticsearchResponse CatHelp(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat @@ -1675,9 +1675,9 @@ public Task> CatHelpAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/indices @@ -1759,9 +1759,9 @@ public ElasticsearchResponse CatIndices(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/indices @@ -1787,9 +1787,9 @@ public Task> CatIndicesAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/indices/{index} @@ -1877,9 +1877,9 @@ public ElasticsearchResponse CatIndices(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/indices/{index} @@ -1907,9 +1907,9 @@ public Task> CatIndicesAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/master @@ -1991,9 +1991,9 @@ public ElasticsearchResponse CatMaster(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/master @@ -2019,9 +2019,9 @@ public Task> CatMasterAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/nodes @@ -2103,9 +2103,9 @@ public ElasticsearchResponse CatNodes(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/nodes @@ -2131,9 +2131,9 @@ public Task> CatNodesAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/pending_tasks @@ -2215,9 +2215,9 @@ public ElasticsearchResponse CatPendingTasks(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/pending_tasks @@ -2243,9 +2243,9 @@ public Task> CatPendingTasksAsync(Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/recovery @@ -2327,9 +2327,9 @@ public ElasticsearchResponse CatRecovery(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/recovery @@ -2355,9 +2355,9 @@ public Task> CatRecoveryAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/recovery/{index} @@ -2445,9 +2445,9 @@ public ElasticsearchResponse CatRecovery(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/recovery/{index} @@ -2475,9 +2475,9 @@ public Task> CatRecoveryAsync(string in if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/shards @@ -2559,9 +2559,9 @@ public ElasticsearchResponse CatShards(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/shards @@ -2587,9 +2587,9 @@ public Task> CatShardsAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/shards/{index} @@ -2677,9 +2677,9 @@ public ElasticsearchResponse CatShards(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/shards/{index} @@ -2707,9 +2707,9 @@ public Task> CatShardsAsync(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/thread_pool @@ -2791,9 +2791,9 @@ public ElasticsearchResponse CatThreadPool(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cat/thread_pool @@ -2819,9 +2819,9 @@ public Task> CatThreadPoolAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_search/scroll/{scroll_id} @@ -2909,9 +2909,9 @@ public ElasticsearchResponse ClearScroll(string scroll_id, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_search/scroll/{scroll_id} @@ -2939,9 +2939,9 @@ public Task> ClearScrollAsync(string sc if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/settings @@ -3023,9 +3023,9 @@ public ElasticsearchResponse ClusterGetSettings(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/settings @@ -3051,9 +3051,9 @@ public Task> ClusterGetSettingsAsync(Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/health @@ -3135,9 +3135,9 @@ public ElasticsearchResponse ClusterHealth(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/health @@ -3163,9 +3163,9 @@ public Task> ClusterHealthAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/health/{index} @@ -3253,9 +3253,9 @@ public ElasticsearchResponse ClusterHealth(string index, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/health/{index} @@ -3283,9 +3283,9 @@ public Task> ClusterHealthAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/pending_tasks @@ -3367,9 +3367,9 @@ public ElasticsearchResponse ClusterPendingTasks(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/pending_tasks @@ -3395,9 +3395,9 @@ public Task> ClusterPendingTasksAsync(F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a PUT on /_cluster/settings @@ -3482,9 +3482,9 @@ public ElasticsearchResponse ClusterPutSettings(object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_cluster/settings @@ -3511,9 +3511,9 @@ public Task> ClusterPutSettingsAsync(ob if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /_cluster/reroute @@ -3598,9 +3598,9 @@ public ElasticsearchResponse ClusterReroute(object body, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_cluster/reroute @@ -3627,9 +3627,9 @@ public Task> ClusterRerouteAsync(object if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_cluster/state @@ -3711,9 +3711,9 @@ public ElasticsearchResponse ClusterState(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/state @@ -3739,9 +3739,9 @@ public Task> ClusterStateAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/state/{metric} @@ -3829,9 +3829,9 @@ public ElasticsearchResponse ClusterState(string metric, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/state/{metric} @@ -3859,9 +3859,9 @@ public Task> ClusterStateAsync(string m if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/state/{metric}/{index} @@ -3955,9 +3955,9 @@ public ElasticsearchResponse ClusterState(string metric, stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/state/{metric}/{index} @@ -3987,9 +3987,9 @@ public Task> ClusterStateAsync(string m if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/stats @@ -4071,9 +4071,9 @@ public ElasticsearchResponse ClusterStats(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/stats @@ -4099,9 +4099,9 @@ public Task> ClusterStatsAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/stats/nodes/{node_id} @@ -4189,9 +4189,9 @@ public ElasticsearchResponse ClusterStats(string node_id, Fun if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/stats/nodes/{node_id} @@ -4219,9 +4219,9 @@ public Task> ClusterStatsAsync(string n if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_count @@ -4306,9 +4306,9 @@ public ElasticsearchResponse Count(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_count @@ -4335,9 +4335,9 @@ public Task> CountAsync(object body, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_count @@ -4428,9 +4428,9 @@ public ElasticsearchResponse Count(string index, object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_count @@ -4459,9 +4459,9 @@ public Task> CountAsync(string index, o if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_count @@ -4558,9 +4558,9 @@ public ElasticsearchResponse Count(string index, string type, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_count @@ -4591,9 +4591,9 @@ public Task> CountAsync(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_count @@ -4675,9 +4675,9 @@ public ElasticsearchResponse CountGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_count @@ -4703,9 +4703,9 @@ public Task> CountGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_count @@ -4793,9 +4793,9 @@ public ElasticsearchResponse CountGet(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_count @@ -4823,9 +4823,9 @@ public Task> CountGetAsync(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_count @@ -4919,9 +4919,9 @@ public ElasticsearchResponse CountGet(string index, string ty if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_count @@ -4951,9 +4951,9 @@ public Task> CountGetAsync(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_percolate/count @@ -5047,9 +5047,9 @@ public ElasticsearchResponse CountPercolateGet(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_percolate/count @@ -5079,9 +5079,9 @@ public Task> CountPercolateGetAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_percolate/count @@ -5181,9 +5181,9 @@ public ElasticsearchResponse CountPercolateGet(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_percolate/count @@ -5215,9 +5215,9 @@ public Task> CountPercolateGetAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_percolate/count @@ -5314,9 +5314,9 @@ public ElasticsearchResponse CountPercolate(string index, str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_percolate/count @@ -5347,9 +5347,9 @@ public Task> CountPercolateAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_percolate/count @@ -5452,9 +5452,9 @@ public ElasticsearchResponse CountPercolate(string index, str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_percolate/count @@ -5487,9 +5487,9 @@ public Task> CountPercolateAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/{type}/{id} @@ -5589,9 +5589,9 @@ public ElasticsearchResponse Delete(string index, string type if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/{type}/{id} @@ -5623,9 +5623,9 @@ public Task> DeleteAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/_query @@ -5716,9 +5716,9 @@ public ElasticsearchResponse DeleteByQuery(string index, obje if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, body, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/_query @@ -5747,9 +5747,9 @@ public Task> DeleteByQueryAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, body, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/{type}/_query @@ -5846,9 +5846,9 @@ public ElasticsearchResponse DeleteByQuery(string index, stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, body, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/{type}/_query @@ -5879,9 +5879,9 @@ public Task> DeleteByQueryAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, body, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/{type}/{id} @@ -5981,9 +5981,9 @@ public ElasticsearchResponse Exists(string index, string type if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/{type}/{id} @@ -6015,9 +6015,9 @@ public Task> ExistsAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_explain @@ -6117,9 +6117,9 @@ public ElasticsearchResponse ExplainGet(string index, string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_explain @@ -6151,9 +6151,9 @@ public Task> ExplainGetAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_explain @@ -6256,9 +6256,9 @@ public ElasticsearchResponse Explain(string index, string typ if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_explain @@ -6291,9 +6291,9 @@ public Task> ExplainAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id} @@ -6393,9 +6393,9 @@ public ElasticsearchResponse Get(string index, string type, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id} @@ -6427,9 +6427,9 @@ public Task> GetAsync(string index, str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_source @@ -6529,9 +6529,9 @@ public ElasticsearchResponse GetSource(string index, string t if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_source @@ -6563,9 +6563,9 @@ public Task> GetSourceAsync(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type} @@ -6662,9 +6662,9 @@ public ElasticsearchResponse Index(string index, string type, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type} @@ -6695,9 +6695,9 @@ public Task> IndexAsync(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id} @@ -6800,9 +6800,9 @@ public ElasticsearchResponse Index(string index, string type, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id} @@ -6835,9 +6835,9 @@ public Task> IndexAsync(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type} @@ -6934,9 +6934,9 @@ public ElasticsearchResponse IndexPut(string index, string ty if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type} @@ -6967,9 +6967,9 @@ public Task> IndexPutAsync(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/{id} @@ -7072,9 +7072,9 @@ public ElasticsearchResponse IndexPut(string index, string ty if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/{id} @@ -7107,9 +7107,9 @@ public Task> IndexPutAsync(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a GET on /_analyze @@ -7191,9 +7191,9 @@ public ElasticsearchResponse IndicesAnalyzeGetForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_analyze @@ -7219,9 +7219,9 @@ public Task> IndicesAnalyzeGetForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_analyze @@ -7309,9 +7309,9 @@ public ElasticsearchResponse IndicesAnalyzeGet(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_analyze @@ -7339,9 +7339,9 @@ public Task> IndicesAnalyzeGetAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_analyze @@ -7426,9 +7426,9 @@ public ElasticsearchResponse IndicesAnalyzeForAll(object body if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_analyze @@ -7455,9 +7455,9 @@ public Task> IndicesAnalyzeForAllAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_analyze @@ -7548,9 +7548,9 @@ public ElasticsearchResponse IndicesAnalyze(string index, obj if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_analyze @@ -7579,9 +7579,9 @@ public Task> IndicesAnalyzeAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_cache/clear @@ -7663,9 +7663,9 @@ public ElasticsearchResponse IndicesClearCacheForAll(Func("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_cache/clear @@ -7691,9 +7691,9 @@ public Task> IndicesClearCacheForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_cache/clear @@ -7781,9 +7781,9 @@ public ElasticsearchResponse IndicesClearCache(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_cache/clear @@ -7811,9 +7811,9 @@ public Task> IndicesClearCacheAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cache/clear @@ -7895,9 +7895,9 @@ public ElasticsearchResponse IndicesClearCacheGetForAll(Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cache/clear @@ -7923,9 +7923,9 @@ public Task> IndicesClearCacheGetForAll if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_cache/clear @@ -8013,9 +8013,9 @@ public ElasticsearchResponse IndicesClearCacheGet(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_cache/clear @@ -8043,9 +8043,9 @@ public Task> IndicesClearCacheGetAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_close @@ -8133,9 +8133,9 @@ public ElasticsearchResponse IndicesClose(string index, Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_close @@ -8163,9 +8163,9 @@ public Task> IndicesCloseAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a PUT on /{index} @@ -8256,9 +8256,9 @@ public ElasticsearchResponse IndicesCreate(string index, obje if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index} @@ -8287,9 +8287,9 @@ public Task> IndicesCreateAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index} @@ -8380,9 +8380,9 @@ public ElasticsearchResponse IndicesCreatePost(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index} @@ -8411,9 +8411,9 @@ public Task> IndicesCreatePostAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a DELETE on /{index} @@ -8501,9 +8501,9 @@ public ElasticsearchResponse IndicesDelete(string index, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index} @@ -8531,9 +8531,9 @@ public Task> IndicesDeleteAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/_alias/{name} @@ -8627,9 +8627,9 @@ public ElasticsearchResponse IndicesDeleteAlias(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/_alias/{name} @@ -8659,9 +8659,9 @@ public Task> IndicesDeleteAliasAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/{type}/_mapping @@ -8755,9 +8755,9 @@ public ElasticsearchResponse IndicesDeleteMapping(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/{type}/_mapping @@ -8787,9 +8787,9 @@ public Task> IndicesDeleteMappingAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_template/{name} @@ -8877,9 +8877,9 @@ public ElasticsearchResponse IndicesDeleteTemplateForAll(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_template/{name} @@ -8907,9 +8907,9 @@ public Task> IndicesDeleteTemplateForAl if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/_warmer/{name} @@ -9003,9 +9003,9 @@ public ElasticsearchResponse IndicesDeleteWarmer(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /{index}/_warmer/{name} @@ -9035,9 +9035,9 @@ public Task> IndicesDeleteWarmerAsync(s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index} @@ -9125,9 +9125,9 @@ public ElasticsearchResponse IndicesExists(string index, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index} @@ -9155,9 +9155,9 @@ public Task> IndicesExistsAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /_alias/{name} @@ -9245,9 +9245,9 @@ public ElasticsearchResponse IndicesExistsAliasForAll(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /_alias/{name} @@ -9275,9 +9275,9 @@ public Task> IndicesExistsAliasForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/_alias/{name} @@ -9371,9 +9371,9 @@ public ElasticsearchResponse IndicesExistsAlias(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/_alias/{name} @@ -9403,9 +9403,9 @@ public Task> IndicesExistsAliasAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/_alias @@ -9493,9 +9493,9 @@ public ElasticsearchResponse IndicesExistsAlias(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/_alias @@ -9523,9 +9523,9 @@ public Task> IndicesExistsAliasAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /_template/{name} @@ -9613,9 +9613,9 @@ public ElasticsearchResponse IndicesExistsTemplateForAll(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /_template/{name} @@ -9643,9 +9643,9 @@ public Task> IndicesExistsTemplateForAl if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/{type} @@ -9739,9 +9739,9 @@ public ElasticsearchResponse IndicesExistsType(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on /{index}/{type} @@ -9771,9 +9771,9 @@ public Task> IndicesExistsTypeAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_flush @@ -9855,9 +9855,9 @@ public ElasticsearchResponse IndicesFlushForAll(Func("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_flush @@ -9883,9 +9883,9 @@ public Task> IndicesFlushForAllAsync(Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_flush @@ -9973,9 +9973,9 @@ public ElasticsearchResponse IndicesFlush(string index, Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_flush @@ -10003,9 +10003,9 @@ public Task> IndicesFlushAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_flush @@ -10087,9 +10087,9 @@ public ElasticsearchResponse IndicesFlushGetForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_flush @@ -10115,9 +10115,9 @@ public Task> IndicesFlushGetForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_flush @@ -10205,9 +10205,9 @@ public ElasticsearchResponse IndicesFlushGet(string index, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_flush @@ -10235,9 +10235,9 @@ public Task> IndicesFlushGetAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_alias @@ -10319,9 +10319,9 @@ public ElasticsearchResponse IndicesGetAliasForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_alias @@ -10347,9 +10347,9 @@ public Task> IndicesGetAliasForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_alias/{name} @@ -10437,9 +10437,9 @@ public ElasticsearchResponse IndicesGetAliasForAll(string nam if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_alias/{name} @@ -10467,9 +10467,9 @@ public Task> IndicesGetAliasForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_alias/{name} @@ -10563,9 +10563,9 @@ public ElasticsearchResponse IndicesGetAlias(string index, st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_alias/{name} @@ -10595,9 +10595,9 @@ public Task> IndicesGetAliasAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_alias @@ -10685,9 +10685,9 @@ public ElasticsearchResponse IndicesGetAlias(string index, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_alias @@ -10715,9 +10715,9 @@ public Task> IndicesGetAliasAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_aliases @@ -10799,9 +10799,9 @@ public ElasticsearchResponse IndicesGetAliasesForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_aliases @@ -10827,9 +10827,9 @@ public Task> IndicesGetAliasesForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_aliases @@ -10917,9 +10917,9 @@ public ElasticsearchResponse IndicesGetAliases(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_aliases @@ -10947,9 +10947,9 @@ public Task> IndicesGetAliasesAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_aliases/{name} @@ -11043,9 +11043,9 @@ public ElasticsearchResponse IndicesGetAliases(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_aliases/{name} @@ -11075,9 +11075,9 @@ public Task> IndicesGetAliasesAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_aliases/{name} @@ -11165,9 +11165,9 @@ public ElasticsearchResponse IndicesGetAliasesForAll(string n if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_aliases/{name} @@ -11195,9 +11195,9 @@ public Task> IndicesGetAliasesForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping/field/{field} @@ -11285,9 +11285,9 @@ public ElasticsearchResponse IndicesGetFieldMappingForAll(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping/field/{field} @@ -11315,9 +11315,9 @@ public Task> IndicesGetFieldMappingForA if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping/field/{field} @@ -11411,9 +11411,9 @@ public ElasticsearchResponse IndicesGetFieldMapping(string in if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping/field/{field} @@ -11443,9 +11443,9 @@ public Task> IndicesGetFieldMappingAsyn if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping/{type}/field/{field} @@ -11539,9 +11539,9 @@ public ElasticsearchResponse IndicesGetFieldMappingForAll(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping/{type}/field/{field} @@ -11571,9 +11571,9 @@ public Task> IndicesGetFieldMappingForA if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping/{type}/field/{field} @@ -11673,9 +11673,9 @@ public ElasticsearchResponse IndicesGetFieldMapping(string in if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping/{type}/field/{field} @@ -11707,9 +11707,9 @@ public Task> IndicesGetFieldMappingAsyn if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping @@ -11791,9 +11791,9 @@ public ElasticsearchResponse IndicesGetMappingForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping @@ -11819,9 +11819,9 @@ public Task> IndicesGetMappingForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping @@ -11909,9 +11909,9 @@ public ElasticsearchResponse IndicesGetMapping(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping @@ -11939,9 +11939,9 @@ public Task> IndicesGetMappingAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping/{type} @@ -12029,9 +12029,9 @@ public ElasticsearchResponse IndicesGetMappingForAll(string t if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mapping/{type} @@ -12059,9 +12059,9 @@ public Task> IndicesGetMappingForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping/{type} @@ -12155,9 +12155,9 @@ public ElasticsearchResponse IndicesGetMapping(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mapping/{type} @@ -12187,9 +12187,9 @@ public Task> IndicesGetMappingAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_settings @@ -12271,9 +12271,9 @@ public ElasticsearchResponse IndicesGetSettingsForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_settings @@ -12299,9 +12299,9 @@ public Task> IndicesGetSettingsForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_settings @@ -12389,9 +12389,9 @@ public ElasticsearchResponse IndicesGetSettings(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_settings @@ -12419,9 +12419,9 @@ public Task> IndicesGetSettingsAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_settings/{name} @@ -12515,9 +12515,9 @@ public ElasticsearchResponse IndicesGetSettings(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_settings/{name} @@ -12547,9 +12547,9 @@ public Task> IndicesGetSettingsAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_settings/{name} @@ -12637,9 +12637,9 @@ public ElasticsearchResponse IndicesGetSettingsForAll(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_settings/{name} @@ -12667,9 +12667,9 @@ public Task> IndicesGetSettingsForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_template @@ -12751,9 +12751,9 @@ public ElasticsearchResponse IndicesGetTemplateForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_template @@ -12779,9 +12779,9 @@ public Task> IndicesGetTemplateForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_template/{name} @@ -12869,9 +12869,9 @@ public ElasticsearchResponse IndicesGetTemplateForAll(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_template/{name} @@ -12899,9 +12899,9 @@ public Task> IndicesGetTemplateForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_warmer @@ -12983,9 +12983,9 @@ public ElasticsearchResponse IndicesGetWarmerForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_warmer @@ -13011,9 +13011,9 @@ public Task> IndicesGetWarmerForAllAsyn if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_warmer @@ -13101,9 +13101,9 @@ public ElasticsearchResponse IndicesGetWarmer(string index, F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_warmer @@ -13131,9 +13131,9 @@ public Task> IndicesGetWarmerAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_warmer/{name} @@ -13227,9 +13227,9 @@ public ElasticsearchResponse IndicesGetWarmer(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_warmer/{name} @@ -13259,9 +13259,9 @@ public Task> IndicesGetWarmerAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_warmer/{name} @@ -13349,9 +13349,9 @@ public ElasticsearchResponse IndicesGetWarmerForAll(string na if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_warmer/{name} @@ -13379,9 +13379,9 @@ public Task> IndicesGetWarmerForAllAsyn if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_warmer/{name} @@ -13481,9 +13481,9 @@ public ElasticsearchResponse IndicesGetWarmer(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_warmer/{name} @@ -13515,9 +13515,9 @@ public Task> IndicesGetWarmerAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_open @@ -13605,9 +13605,9 @@ public ElasticsearchResponse IndicesOpen(string index, Func("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_open @@ -13635,9 +13635,9 @@ public Task> IndicesOpenAsync(string in if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_optimize @@ -13719,9 +13719,9 @@ public ElasticsearchResponse IndicesOptimizeForAll(Func("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_optimize @@ -13747,9 +13747,9 @@ public Task> IndicesOptimizeForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_optimize @@ -13837,9 +13837,9 @@ public ElasticsearchResponse IndicesOptimize(string index, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_optimize @@ -13867,9 +13867,9 @@ public Task> IndicesOptimizeAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_optimize @@ -13951,9 +13951,9 @@ public ElasticsearchResponse IndicesOptimizeGetForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_optimize @@ -13979,9 +13979,9 @@ public Task> IndicesOptimizeGetForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_optimize @@ -14069,9 +14069,9 @@ public ElasticsearchResponse IndicesOptimizeGet(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_optimize @@ -14099,9 +14099,9 @@ public Task> IndicesOptimizeGetAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_alias/{name} @@ -14198,9 +14198,9 @@ public ElasticsearchResponse IndicesPutAlias(string index, st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_alias/{name} @@ -14231,9 +14231,9 @@ public Task> IndicesPutAliasAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_alias/{name} @@ -14324,9 +14324,9 @@ public ElasticsearchResponse IndicesPutAliasForAll(string nam if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_alias/{name} @@ -14355,9 +14355,9 @@ public Task> IndicesPutAliasForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_alias/{name} @@ -14454,9 +14454,9 @@ public ElasticsearchResponse IndicesPutAliasPost(string index if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_alias/{name} @@ -14487,9 +14487,9 @@ public Task> IndicesPutAliasPostAsync(s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_alias/{name} @@ -14580,9 +14580,9 @@ public ElasticsearchResponse IndicesPutAliasPostForAll(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_alias/{name} @@ -14611,9 +14611,9 @@ public Task> IndicesPutAliasPostForAllA if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/_mapping @@ -14710,9 +14710,9 @@ public ElasticsearchResponse IndicesPutMapping(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/_mapping @@ -14743,9 +14743,9 @@ public Task> IndicesPutMappingAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_mapping/{type} @@ -14836,9 +14836,9 @@ public ElasticsearchResponse IndicesPutMappingForAll(string t if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_mapping/{type} @@ -14867,9 +14867,9 @@ public Task> IndicesPutMappingForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mapping @@ -14966,9 +14966,9 @@ public ElasticsearchResponse IndicesPutMappingPost(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mapping @@ -14999,9 +14999,9 @@ public Task> IndicesPutMappingPostAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_mapping/{type} @@ -15092,9 +15092,9 @@ public ElasticsearchResponse IndicesPutMappingPostForAll(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_mapping/{type} @@ -15123,9 +15123,9 @@ public Task> IndicesPutMappingPostForAl if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_settings @@ -15210,9 +15210,9 @@ public ElasticsearchResponse IndicesPutSettingsForAll(object if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_settings @@ -15239,9 +15239,9 @@ public Task> IndicesPutSettingsForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_settings @@ -15332,9 +15332,9 @@ public ElasticsearchResponse IndicesPutSettings(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_settings @@ -15363,9 +15363,9 @@ public Task> IndicesPutSettingsAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_template/{name} @@ -15456,9 +15456,9 @@ public ElasticsearchResponse IndicesPutTemplateForAll(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_template/{name} @@ -15487,9 +15487,9 @@ public Task> IndicesPutTemplateForAllAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /_template/{name} @@ -15580,9 +15580,9 @@ public ElasticsearchResponse IndicesPutTemplatePostForAll(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_template/{name} @@ -15611,9 +15611,9 @@ public Task> IndicesPutTemplatePostForA if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_warmer/{name} @@ -15704,9 +15704,9 @@ public ElasticsearchResponse IndicesPutWarmerForAll(string na if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_warmer/{name} @@ -15735,9 +15735,9 @@ public Task> IndicesPutWarmerForAllAsyn if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_warmer/{name} @@ -15834,9 +15834,9 @@ public ElasticsearchResponse IndicesPutWarmer(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/_warmer/{name} @@ -15867,9 +15867,9 @@ public Task> IndicesPutWarmerAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/_warmer/{name} @@ -15972,9 +15972,9 @@ public ElasticsearchResponse IndicesPutWarmer(string index, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /{index}/{type}/_warmer/{name} @@ -16007,9 +16007,9 @@ public Task> IndicesPutWarmerAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /_warmer/{name} @@ -16100,9 +16100,9 @@ public ElasticsearchResponse IndicesPutWarmerPostForAll(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_warmer/{name} @@ -16131,9 +16131,9 @@ public Task> IndicesPutWarmerPostForAll if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_warmer/{name} @@ -16230,9 +16230,9 @@ public ElasticsearchResponse IndicesPutWarmerPost(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_warmer/{name} @@ -16263,9 +16263,9 @@ public Task> IndicesPutWarmerPostAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_warmer/{name} @@ -16368,9 +16368,9 @@ public ElasticsearchResponse IndicesPutWarmerPost(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_warmer/{name} @@ -16403,9 +16403,9 @@ public Task> IndicesPutWarmerPostAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_refresh @@ -16487,9 +16487,9 @@ public ElasticsearchResponse IndicesRefreshForAll(Func("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_refresh @@ -16515,9 +16515,9 @@ public Task> IndicesRefreshForAllAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_refresh @@ -16605,9 +16605,9 @@ public ElasticsearchResponse IndicesRefresh(string index, Fun if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_refresh @@ -16635,9 +16635,9 @@ public Task> IndicesRefreshAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_refresh @@ -16719,9 +16719,9 @@ public ElasticsearchResponse IndicesRefreshGetForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_refresh @@ -16747,9 +16747,9 @@ public Task> IndicesRefreshGetForAllAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_refresh @@ -16837,9 +16837,9 @@ public ElasticsearchResponse IndicesRefreshGet(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_refresh @@ -16867,9 +16867,9 @@ public Task> IndicesRefreshGetAsync(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_segments @@ -16951,9 +16951,9 @@ public ElasticsearchResponse IndicesSegmentsForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_segments @@ -16979,9 +16979,9 @@ public Task> IndicesSegmentsForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_segments @@ -17069,9 +17069,9 @@ public ElasticsearchResponse IndicesSegments(string index, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_segments @@ -17099,9 +17099,9 @@ public Task> IndicesSegmentsAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_gateway/snapshot @@ -17183,9 +17183,9 @@ public ElasticsearchResponse IndicesSnapshotIndexForAll(Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_gateway/snapshot @@ -17211,9 +17211,9 @@ public Task> IndicesSnapshotIndexForAll if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_gateway/snapshot @@ -17301,9 +17301,9 @@ public ElasticsearchResponse IndicesSnapshotIndex(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/_gateway/snapshot @@ -17331,9 +17331,9 @@ public Task> IndicesSnapshotIndexAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_stats @@ -17415,9 +17415,9 @@ public ElasticsearchResponse IndicesStatsForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_stats @@ -17443,9 +17443,9 @@ public Task> IndicesStatsForAllAsync(Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_stats/{metric} @@ -17533,9 +17533,9 @@ public ElasticsearchResponse IndicesStatsForAll(string metric if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_stats/{metric} @@ -17563,9 +17563,9 @@ public Task> IndicesStatsForAllAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_stats @@ -17653,9 +17653,9 @@ public ElasticsearchResponse IndicesStats(string index, Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_stats @@ -17683,9 +17683,9 @@ public Task> IndicesStatsAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_stats/{metric} @@ -17779,9 +17779,9 @@ public ElasticsearchResponse IndicesStats(string index, strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_stats/{metric} @@ -17811,9 +17811,9 @@ public Task> IndicesStatsAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_status @@ -17895,9 +17895,9 @@ public ElasticsearchResponse IndicesStatusForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_status @@ -17923,9 +17923,9 @@ public Task> IndicesStatusForAllAsync(F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_status @@ -18013,9 +18013,9 @@ public ElasticsearchResponse IndicesStatus(string index, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_status @@ -18043,9 +18043,9 @@ public Task> IndicesStatusAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_aliases @@ -18130,9 +18130,9 @@ public ElasticsearchResponse IndicesUpdateAliasesForAll(objec if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_aliases @@ -18159,9 +18159,9 @@ public Task> IndicesUpdateAliasesForAll if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_validate/query @@ -18243,9 +18243,9 @@ public ElasticsearchResponse IndicesValidateQueryGetForAll(Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_validate/query @@ -18271,9 +18271,9 @@ public Task> IndicesValidateQueryGetFor if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_validate/query @@ -18361,9 +18361,9 @@ public ElasticsearchResponse IndicesValidateQueryGet(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_validate/query @@ -18391,9 +18391,9 @@ public Task> IndicesValidateQueryGetAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_validate/query @@ -18487,9 +18487,9 @@ public ElasticsearchResponse IndicesValidateQueryGet(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_validate/query @@ -18519,9 +18519,9 @@ public Task> IndicesValidateQueryGetAsy if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_validate/query @@ -18606,9 +18606,9 @@ public ElasticsearchResponse IndicesValidateQueryForAll(objec if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_validate/query @@ -18635,9 +18635,9 @@ public Task> IndicesValidateQueryForAll if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_validate/query @@ -18728,9 +18728,9 @@ public ElasticsearchResponse IndicesValidateQuery(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_validate/query @@ -18759,9 +18759,9 @@ public Task> IndicesValidateQueryAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_validate/query @@ -18858,9 +18858,9 @@ public ElasticsearchResponse IndicesValidateQuery(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_validate/query @@ -18891,9 +18891,9 @@ public Task> IndicesValidateQueryAsync( if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on / @@ -18975,9 +18975,9 @@ public ElasticsearchResponse Info(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on / @@ -19003,9 +19003,9 @@ public Task> InfoAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mget @@ -19087,9 +19087,9 @@ public ElasticsearchResponse MgetGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mget @@ -19115,9 +19115,9 @@ public Task> MgetGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mget @@ -19205,9 +19205,9 @@ public ElasticsearchResponse MgetGet(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mget @@ -19235,9 +19235,9 @@ public Task> MgetGetAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_mget @@ -19331,9 +19331,9 @@ public ElasticsearchResponse MgetGet(string index, string typ if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_mget @@ -19363,9 +19363,9 @@ public Task> MgetGetAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_mget @@ -19450,9 +19450,9 @@ public ElasticsearchResponse Mget(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_mget @@ -19479,9 +19479,9 @@ public Task> MgetAsync(object body, Fun if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_mget @@ -19572,9 +19572,9 @@ public ElasticsearchResponse Mget(string index, object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_mget @@ -19603,9 +19603,9 @@ public Task> MgetAsync(string index, ob if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mget @@ -19702,9 +19702,9 @@ public ElasticsearchResponse Mget(string index, string type, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mget @@ -19735,9 +19735,9 @@ public Task> MgetAsync(string index, st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_mlt @@ -19837,9 +19837,9 @@ public ElasticsearchResponse MltGet(string index, string type if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_mlt @@ -19871,9 +19871,9 @@ public Task> MltGetAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_mlt @@ -19976,9 +19976,9 @@ public ElasticsearchResponse Mlt(string index, string type, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_mlt @@ -20011,9 +20011,9 @@ public Task> MltAsync(string index, str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_mpercolate @@ -20095,9 +20095,9 @@ public ElasticsearchResponse MpercolateGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mpercolate @@ -20123,9 +20123,9 @@ public Task> MpercolateGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mpercolate @@ -20213,9 +20213,9 @@ public ElasticsearchResponse MpercolateGet(string index, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mpercolate @@ -20243,9 +20243,9 @@ public Task> MpercolateGetAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_mpercolate @@ -20339,9 +20339,9 @@ public ElasticsearchResponse MpercolateGet(string index, stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_mpercolate @@ -20371,9 +20371,9 @@ public Task> MpercolateGetAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_mpercolate @@ -20458,9 +20458,9 @@ public ElasticsearchResponse Mpercolate(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_mpercolate @@ -20487,9 +20487,9 @@ public Task> MpercolateAsync(object bod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_mpercolate @@ -20580,9 +20580,9 @@ public ElasticsearchResponse Mpercolate(string index, object if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_mpercolate @@ -20611,9 +20611,9 @@ public Task> MpercolateAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mpercolate @@ -20710,9 +20710,9 @@ public ElasticsearchResponse Mpercolate(string index, string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mpercolate @@ -20743,9 +20743,9 @@ public Task> MpercolateAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_msearch @@ -20827,9 +20827,9 @@ public ElasticsearchResponse MsearchGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_msearch @@ -20855,9 +20855,9 @@ public Task> MsearchGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_msearch @@ -20945,9 +20945,9 @@ public ElasticsearchResponse MsearchGet(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_msearch @@ -20975,9 +20975,9 @@ public Task> MsearchGetAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_msearch @@ -21071,9 +21071,9 @@ public ElasticsearchResponse MsearchGet(string index, string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_msearch @@ -21103,9 +21103,9 @@ public Task> MsearchGetAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_msearch @@ -21190,9 +21190,9 @@ public ElasticsearchResponse Msearch(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_msearch @@ -21219,9 +21219,9 @@ public Task> MsearchAsync(object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_msearch @@ -21312,9 +21312,9 @@ public ElasticsearchResponse Msearch(string index, object bod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_msearch @@ -21343,9 +21343,9 @@ public Task> MsearchAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_msearch @@ -21442,9 +21442,9 @@ public ElasticsearchResponse Msearch(string index, string typ if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_msearch @@ -21475,9 +21475,9 @@ public Task> MsearchAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_mtermvectors @@ -21559,9 +21559,9 @@ public ElasticsearchResponse MtermvectorsGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_mtermvectors @@ -21587,9 +21587,9 @@ public Task> MtermvectorsGetAsync(Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mtermvectors @@ -21677,9 +21677,9 @@ public ElasticsearchResponse MtermvectorsGet(string index, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_mtermvectors @@ -21707,9 +21707,9 @@ public Task> MtermvectorsGetAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_mtermvectors @@ -21803,9 +21803,9 @@ public ElasticsearchResponse MtermvectorsGet(string index, st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_mtermvectors @@ -21835,9 +21835,9 @@ public Task> MtermvectorsGetAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_mtermvectors @@ -21922,9 +21922,9 @@ public ElasticsearchResponse Mtermvectors(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_mtermvectors @@ -21951,9 +21951,9 @@ public Task> MtermvectorsAsync(object b if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_mtermvectors @@ -22044,9 +22044,9 @@ public ElasticsearchResponse Mtermvectors(string index, objec if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_mtermvectors @@ -22075,9 +22075,9 @@ public Task> MtermvectorsAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mtermvectors @@ -22174,9 +22174,9 @@ public ElasticsearchResponse Mtermvectors(string index, strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_mtermvectors @@ -22207,9 +22207,9 @@ public Task> MtermvectorsAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_cluster/nodes/hotthreads @@ -22291,9 +22291,9 @@ public ElasticsearchResponse NodesHotThreadsForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/nodes/hotthreads @@ -22319,9 +22319,9 @@ public Task> NodesHotThreadsForAllAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads @@ -22409,9 +22409,9 @@ public ElasticsearchResponse NodesHotThreads(string node_id, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_cluster/nodes/{node_id}/hotthreads @@ -22439,9 +22439,9 @@ public Task> NodesHotThreadsAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes @@ -22523,9 +22523,9 @@ public ElasticsearchResponse NodesInfoForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes @@ -22551,9 +22551,9 @@ public Task> NodesInfoForAllAsync(Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id} @@ -22641,9 +22641,9 @@ public ElasticsearchResponse NodesInfo(string node_id, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id} @@ -22671,9 +22671,9 @@ public Task> NodesInfoAsync(string node if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{metric} @@ -22761,9 +22761,9 @@ public ElasticsearchResponse NodesInfoForAll(string metric, F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{metric} @@ -22791,9 +22791,9 @@ public Task> NodesInfoForAllAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/{metric} @@ -22887,9 +22887,9 @@ public ElasticsearchResponse NodesInfo(string node_id, string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/{metric} @@ -22919,9 +22919,9 @@ public Task> NodesInfoAsync(string node if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_shutdown @@ -23003,9 +23003,9 @@ public ElasticsearchResponse NodesShutdownForAll(Func("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_shutdown @@ -23031,9 +23031,9 @@ public Task> NodesShutdownForAllAsync(F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown @@ -23121,9 +23121,9 @@ public ElasticsearchResponse NodesShutdown(string node_id, Fu if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_cluster/nodes/{node_id}/_shutdown @@ -23151,9 +23151,9 @@ public Task> NodesShutdownAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/stats @@ -23235,9 +23235,9 @@ public ElasticsearchResponse NodesStatsForAll(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/stats @@ -23263,9 +23263,9 @@ public Task> NodesStatsForAllAsync(Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/stats @@ -23353,9 +23353,9 @@ public ElasticsearchResponse NodesStats(string node_id, Func< if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/stats @@ -23383,9 +23383,9 @@ public Task> NodesStatsAsync(string nod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/stats/{metric} @@ -23473,9 +23473,9 @@ public ElasticsearchResponse NodesStatsForAll(string metric, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/stats/{metric} @@ -23503,9 +23503,9 @@ public Task> NodesStatsForAllAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/stats/{metric} @@ -23599,9 +23599,9 @@ public ElasticsearchResponse NodesStats(string node_id, strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/stats/{metric} @@ -23631,9 +23631,9 @@ public Task> NodesStatsAsync(string nod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/stats/{metric}/{index_metric} @@ -23727,9 +23727,9 @@ public ElasticsearchResponse NodesStatsForAll(string metric, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/stats/{metric}/{index_metric} @@ -23759,9 +23759,9 @@ public Task> NodesStatsForAllAsync(stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} @@ -23861,9 +23861,9 @@ public ElasticsearchResponse NodesStats(string node_id, strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_nodes/{node_id}/stats/{metric}/{index_metric} @@ -23895,9 +23895,9 @@ public Task> NodesStatsAsync(string nod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_percolate @@ -23991,9 +23991,9 @@ public ElasticsearchResponse PercolateGet(string index, strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_percolate @@ -24023,9 +24023,9 @@ public Task> PercolateGetAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_percolate @@ -24125,9 +24125,9 @@ public ElasticsearchResponse PercolateGet(string index, strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_percolate @@ -24159,9 +24159,9 @@ public Task> PercolateGetAsync(string i if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_percolate @@ -24258,9 +24258,9 @@ public ElasticsearchResponse Percolate(string index, string t if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_percolate @@ -24291,9 +24291,9 @@ public Task> PercolateAsync(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_percolate @@ -24396,9 +24396,9 @@ public ElasticsearchResponse Percolate(string index, string t if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_percolate @@ -24431,9 +24431,9 @@ public Task> PercolateAsync(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a HEAD on / @@ -24515,9 +24515,9 @@ public ElasticsearchResponse Ping(Func("HEAD", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a HEAD on / @@ -24543,9 +24543,9 @@ public Task> PingAsync(Func("HEAD", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("HEAD", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_search/scroll @@ -24627,9 +24627,9 @@ public ElasticsearchResponse ScrollGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_search/scroll @@ -24655,9 +24655,9 @@ public Task> ScrollGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_search/scroll/{scroll_id} @@ -24745,9 +24745,9 @@ public ElasticsearchResponse ScrollGet(string scroll_id, Func if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_search/scroll/{scroll_id} @@ -24775,9 +24775,9 @@ public Task> ScrollGetAsync(string scro if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_search/scroll @@ -24862,9 +24862,9 @@ public ElasticsearchResponse Scroll(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_search/scroll @@ -24891,9 +24891,9 @@ public Task> ScrollAsync(object body, F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_search/scroll/{scroll_id} @@ -24984,9 +24984,9 @@ public ElasticsearchResponse Scroll(string scroll_id, object if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_search/scroll/{scroll_id} @@ -25015,9 +25015,9 @@ public Task> ScrollAsync(string scroll_ if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_search @@ -25099,9 +25099,9 @@ public ElasticsearchResponse SearchGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_search @@ -25127,9 +25127,9 @@ public Task> SearchGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_search @@ -25217,9 +25217,9 @@ public ElasticsearchResponse SearchGet(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_search @@ -25247,9 +25247,9 @@ public Task> SearchGetAsync(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_search @@ -25343,9 +25343,9 @@ public ElasticsearchResponse SearchGet(string index, string t if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/_search @@ -25375,9 +25375,9 @@ public Task> SearchGetAsync(string inde if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_search @@ -25462,9 +25462,9 @@ public ElasticsearchResponse Search(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_search @@ -25491,9 +25491,9 @@ public Task> SearchAsync(object body, F if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_search @@ -25584,9 +25584,9 @@ public ElasticsearchResponse Search(string index, object body if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_search @@ -25615,9 +25615,9 @@ public Task> SearchAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_search @@ -25714,9 +25714,9 @@ public ElasticsearchResponse Search(string index, string type if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/_search @@ -25747,9 +25747,9 @@ public Task> SearchAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_snapshot/{repository}/{snapshot} @@ -25846,9 +25846,9 @@ public ElasticsearchResponse SnapshotCreate(string repository if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_snapshot/{repository}/{snapshot} @@ -25879,9 +25879,9 @@ public Task> SnapshotCreateAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /_snapshot/{repository}/{snapshot} @@ -25978,9 +25978,9 @@ public ElasticsearchResponse SnapshotCreatePost(string reposi if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_snapshot/{repository}/{snapshot} @@ -26011,9 +26011,9 @@ public Task> SnapshotCreatePostAsync(st if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_snapshot/{repository} @@ -26104,9 +26104,9 @@ public ElasticsearchResponse SnapshotCreateRepository(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("PUT", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("PUT", url, body, queryString: nv - ); + )); } ///Represents a PUT on /_snapshot/{repository} @@ -26135,9 +26135,9 @@ public Task> SnapshotCreateRepositoryAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("PUT", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("PUT", url, body, queryString: nv - ); + )); } ///Represents a POST on /_snapshot/{repository} @@ -26228,9 +26228,9 @@ public ElasticsearchResponse SnapshotCreateRepositoryPost(str if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_snapshot/{repository} @@ -26259,9 +26259,9 @@ public Task> SnapshotCreateRepositoryPo if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a DELETE on /_snapshot/{repository}/{snapshot} @@ -26355,9 +26355,9 @@ public ElasticsearchResponse SnapshotDelete(string repository if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_snapshot/{repository}/{snapshot} @@ -26387,9 +26387,9 @@ public Task> SnapshotDeleteAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_snapshot/{repository} @@ -26477,9 +26477,9 @@ public ElasticsearchResponse SnapshotDeleteRepository(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("DELETE", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a DELETE on /_snapshot/{repository} @@ -26507,9 +26507,9 @@ public Task> SnapshotDeleteRepositoryAs if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("DELETE", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("DELETE", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_snapshot/{repository}/{snapshot} @@ -26603,9 +26603,9 @@ public ElasticsearchResponse SnapshotGet(string repository, s if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_snapshot/{repository}/{snapshot} @@ -26635,9 +26635,9 @@ public Task> SnapshotGetAsync(string re if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_snapshot @@ -26719,9 +26719,9 @@ public ElasticsearchResponse SnapshotGetRepository(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_snapshot @@ -26747,9 +26747,9 @@ public Task> SnapshotGetRepositoryAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_snapshot/{repository} @@ -26837,9 +26837,9 @@ public ElasticsearchResponse SnapshotGetRepository(string rep if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_snapshot/{repository} @@ -26867,9 +26867,9 @@ public Task> SnapshotGetRepositoryAsync if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore @@ -26966,9 +26966,9 @@ public ElasticsearchResponse SnapshotRestore(string repositor if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_snapshot/{repository}/{snapshot}/_restore @@ -26999,9 +26999,9 @@ public Task> SnapshotRestoreAsync(strin if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_suggest @@ -27086,9 +27086,9 @@ public ElasticsearchResponse Suggest(object body, Func("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /_suggest @@ -27115,9 +27115,9 @@ public Task> SuggestAsync(object body, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_suggest @@ -27208,9 +27208,9 @@ public ElasticsearchResponse Suggest(string index, object bod if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/_suggest @@ -27239,9 +27239,9 @@ public Task> SuggestAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a GET on /_suggest @@ -27323,9 +27323,9 @@ public ElasticsearchResponse SuggestGet(Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /_suggest @@ -27351,9 +27351,9 @@ public Task> SuggestGetAsync(Func("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_suggest @@ -27441,9 +27441,9 @@ public ElasticsearchResponse SuggestGet(string index, Func("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/_suggest @@ -27471,9 +27471,9 @@ public Task> SuggestGetAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_termvector @@ -27573,9 +27573,9 @@ public ElasticsearchResponse TermvectorGet(string index, stri if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("GET", url, data: null, + return ElasticsearchResponse.Wrap(this.DoRequest>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a GET on /{index}/{type}/{id}/_termvector @@ -27607,9 +27607,9 @@ public Task> TermvectorGetAsync(string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("GET", url, data: null, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("GET", url, data: null, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_termvector @@ -27712,9 +27712,9 @@ public ElasticsearchResponse Termvector(string index, string if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_termvector @@ -27747,9 +27747,9 @@ public Task> TermvectorAsync(string ind if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_update @@ -27852,9 +27852,9 @@ public ElasticsearchResponse Update(string index, string type if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequest("POST", url, body, + return ElasticsearchResponse.Wrap(this.DoRequest>("POST", url, body, queryString: nv - ); + )); } ///Represents a POST on /{index}/{type}/{id}/_update @@ -27887,9 +27887,9 @@ public Task> UpdateAsync(string index, if (qs != null) nv = this.ToNameValueCollection(qs); } - return this.DoRequestAsync("POST", url, body, + return ElasticsearchResponse.WrapAsync(this.DoRequestAsync>("POST", url, body, queryString: nv - ); + )); } } diff --git a/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs b/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs index 11c0f543c29..03192c8cd5e 100644 --- a/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs +++ b/src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs @@ -16,13 +16,16 @@ public T Deserialize(byte[] bytes) where T : class public T Deserialize(IElasticsearchResponse response, Stream stream, object deserializeState) { var ms = stream as MemoryStream; - if (ms != null) - return SimpleJson.DeserializeObject(ms.GetBuffer().Utf8String()); + //if (ms != null) + // return SimpleJson.DeserializeObject(ms.GetBuffer().Utf8String()); using (ms = new MemoryStream()) { stream.CopyTo(ms); - return SimpleJson.DeserializeObject(ms.ToArray().Utf8String()); + byte[] buffer = ms.ToArray(); + if (buffer.Length == 0) + return default(T); + return SimpleJson.DeserializeObject(buffer.Utf8String()); } } public Task DeserializeAsync(IElasticsearchResponse response, Stream stream, object deserializeState) diff --git a/src/Profiling/Profiling.InMemoryConnection/Program.cs b/src/Profiling/Profiling.InMemoryConnection/Program.cs index 4a15a9dade0..fc632d43db1 100644 --- a/src/Profiling/Profiling.InMemoryConnection/Program.cs +++ b/src/Profiling/Profiling.InMemoryConnection/Program.cs @@ -11,7 +11,10 @@ private class Doc public string Id { get; set; } public string Name { get; set; } } - + /// + /// Mainly used to profile the serialization performance and memory usage + /// + /// static void Main(string[] args) { var settings = new ConnectionSettings(new Uri("http://localhost:9200"),"test-index"); diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs index 51bfd86f6a9..91500793e8b 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs @@ -31,7 +31,11 @@ static YamlTestsBase() host = "ipv4.fiddler"; var uri = new Uri("http://"+host+":9200/"); var settings = new ConnectionConfiguration(uri).UsePrettyResponses(); - _client = new ElasticsearchClient(settings); + + var jsonNetSerializer = new ElasticsearchJsonNetSerializer(); + + //_client = new ElasticsearchClient(settings); + _client = new ElasticsearchClient(settings, serializer: jsonNetSerializer); var infoResponse = _client.Info(); dynamic info = infoResponse.Response; _versionNumber = new Version(info.version.number); @@ -107,7 +111,7 @@ protected void IsTrue(object o) Assert.Fail("HEAD request returned status:" + c.Error.HttpStatusCode); } else if (c.RequestMethod == "HEAD") return; - o = Encoding.UTF8.GetString(c.ResponseRaw); + //o = Encoding.UTF8.GetString(c.ResponseRaw); } o = Unbox(o); @@ -135,6 +139,10 @@ protected void IsTrue(object o) var s = (string) o; if (string.IsNullOrWhiteSpace(s)) Assert.Fail("Expected string to not be null or whitespace"); } + else if (o is DynamicDictionary) + { + Assert.Greater(((DynamicDictionary)o).Count, 0); + } else { var s = _client.Serializer.Serialize(o); @@ -293,6 +301,7 @@ protected void IsMatch(object o, object value) { var s = (string)o; var v = value.ToString(); + //string is json parse it and compare it if (s.StartsWith("{") && !(value is string)) { var json = _client.Serializer.Serialize(value); @@ -300,6 +309,7 @@ protected void IsMatch(object o, object value) var nOtherJson = JObject.Parse(Encoding.UTF8.GetString(json)).ToString(); Assert.AreEqual(nJson, nOtherJson); } + //string represents a regex on the response body else if (v.StartsWith("/")) { var re = Regex.Replace(v, @"(^[\s\r\n]*?\/|\/[\s\r\n]*?$)", ""); @@ -321,16 +331,16 @@ protected void IsMatch(object o, object value) { var d = value as IDictionary; var dd = o as IDictionary; - if (d == null) + if (d == null) //d is an anonymous object turn it into a dict d = (from x in value.GetType().GetProperties() select x) .ToDictionary( x => x.Name, x => (x.GetGetMethod().Invoke(value, null) ?? "")); - var json = _client.Serializer.Serialize(new SortedDictionary(d)); - var otherJson = _client.Serializer.Serialize(new SortedDictionary(dd)); - var nJson = JObject.Parse(Encoding.UTF8.GetString(json)).ToString(); - var nOtherJson = JObject.Parse(Encoding.UTF8.GetString(otherJson)).ToString(); - Assert.AreEqual(nJson, nOtherJson); + + var equals = DynamicDictionary.Create(d) + .SequenceEqual(dd); + Assert.True(equals, "response did not match expected return"); + } else Assert.Fail(message); } diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs index c27acd5abd7..17299775209 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/RetryTests.cs @@ -56,8 +56,8 @@ public async void ThrowsOutOfNodesException_AndRetriesTheSpecifiedTimes_Async() var getCall = FakeCalls.GetCall(fake); //return a started task that throws - Func> badTask = () => { throw new Exception(); }; - var t = new Task>(badTask); + Func>> badTask = () => { throw new Exception(); }; + var t = new Task>>(badTask); t.Start(); getCall.Returns(t); diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs index 9b55308878a..0fc3299f32f 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/SniffingConnectionPoolTests.cs @@ -201,7 +201,7 @@ public void HostsReturnedBySniffAreVisited() var seenNodes = new List(); //var getCall = FakeResponse.GetSyncCall(fake); - var getCall = A.CallTo(() => connection.GetSync(A._, A._)); + var getCall = A.CallTo(() => connection.GetSync>(A._, A._)); getCall.ReturnsNextFromSequence( FakeResponse.Ok(config), //info 1 FakeResponse.Bad(config), //info 2 diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs index 648ff90df12..f8b566f6e73 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Connection/StaticConnectionPoolRetryTests.cs @@ -126,7 +126,7 @@ public void HardRetryLimitTakesPrecedenceOverNumberOfNodes() .MaximumRetries(7) ); var getCall = A.CallTo(() => - fake.Resolve().GetSync(A._, A._)); + fake.Resolve().GetSync>(A._, A._)); getCall.Throws(); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); @@ -158,13 +158,13 @@ public void AConnectionMustBeMadeEvenIfAllNodesAreDead() ); //set up our GET to / to return 4 503's followed by a 200 var getCall = A.CallTo(() => - fake.Resolve().GetSync(A._, A._)); + fake.Resolve().GetSync>(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null) + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 200, "GET", "/", null) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); @@ -216,9 +216,9 @@ public void AllNodesWillBeMarkedDead() //When we do a GET on / we always recieve a 503 var getCall = A.CallTo(() => - fake.Resolve().GetSync(A._, A._)); + fake.Resolve().GetSync>(A._, A._)); getCall.Returns( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null) + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); @@ -264,13 +264,13 @@ public void IfAConnectionComesBackToLifeOnItsOwnItShouldBeMarked() //fake getsync handler that return a 503 4 times and then a 200 //this will cause all 4 nodes to be marked dead on the first client call var getCall = A.CallTo(() => - fake.Resolve().GetSync(A._, A._)); + fake.Resolve().GetSync>(A._, A._)); getCall.ReturnsNextFromSequence( - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 503, "GET", "/", null), - ElasticsearchResponse.Create(_config, 200, "GET", "/", null) + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 503, "GET", "/", null), + ElasticsearchResponse>.Create(_config, 200, "GET", "/", null) ); var pingCall = A.CallTo(() => fake.Resolve().Ping(A._)); pingCall.Returns(true); diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs index 5f8664de41f..bc4485a2200 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeCalls.cs @@ -1,4 +1,6 @@ using System; +using System.Collections; +using System.Collections.Generic; using System.Threading.Tasks; using Autofac; using Autofac.Extras.FakeItEasy; @@ -11,15 +13,15 @@ namespace Elasticsearch.Net.Tests.Unit.Stubs { public static class FakeCalls { - public static IReturnValueConfiguration> GetSyncCall(AutoFake fake) + public static IReturnValueConfiguration>> GetSyncCall(AutoFake fake) { return A.CallTo(() => - fake.Resolve().GetSync(A._, null)); + fake.Resolve().GetSync>(A._, null)); } - public static IReturnValueArgumentValidationConfiguration>> GetCall(AutoFake fake) + public static IReturnValueArgumentValidationConfiguration>>> GetCall(AutoFake fake) { return A.CallTo(() => - fake.Resolve().Get(A._, A._)); + fake.Resolve().Get>(A._, A._)); } public static IReturnValueArgumentValidationConfiguration Ping(AutoFake fake) diff --git a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs index a139f6efca7..843d01de08e 100644 --- a/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs +++ b/src/Tests/Elasticsearch.Net.Tests.Unit/Stubs/FakeResponse.cs @@ -1,31 +1,32 @@ +using System.Collections.Generic; using Elasticsearch.Net.Connection; namespace Elasticsearch.Net.Tests.Unit.Stubs { public static class FakeResponse { - public static ElasticsearchResponse Ok( + public static ElasticsearchResponse> Ok( IConnectionConfigurationValues config, string method = "GET", string path = "/") { - return ElasticsearchResponse.Create(config, 200, method, path, null); + return ElasticsearchResponse>.Create(config, 200, method, path, null); } - public static ElasticsearchResponse Bad( + public static ElasticsearchResponse> Bad( IConnectionConfigurationValues config, string method = "GET", string path = "/") { - return ElasticsearchResponse.Create(config, 503, method, path, null); + return ElasticsearchResponse>.Create(config, 503, method, path, null); } - public static ElasticsearchResponse Any( + public static ElasticsearchResponse> Any( IConnectionConfigurationValues config, int statusCode, string method = "GET", string path = "/") { - return ElasticsearchResponse.Create(config, statusCode, method, path, null); + return ElasticsearchResponse>.Create(config, statusCode, method, path, null); } } } \ No newline at end of file diff --git a/src/Tests/Nest.Tests.Integration/ConnectionTests.cs b/src/Tests/Nest.Tests.Integration/ConnectionTests.cs index 5e6c1585f50..9bd6154a01e 100644 --- a/src/Tests/Nest.Tests.Integration/ConnectionTests.cs +++ b/src/Tests/Nest.Tests.Integration/ConnectionTests.cs @@ -61,6 +61,8 @@ public void connect_to_unknown_hostname() { IRootInfoResponse result = null; + //this test will fail if fiddler is enabled since the proxy + //will report a statuscode of 502 instead of -1 Assert.Throws(() => { var settings = new ConnectionSettings(new Uri("http://youdontownthis.domain.do.you"), "index"); From f7b9549c6700e37c3541e9ed31fed859133e45cf Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 20 Mar 2014 13:01:20 +0100 Subject: [PATCH 10/12] string, byte[] return types do not pass the serializer but are read and set straight from the stream, return type VoidResponse will skip the response stream alltogetheR --- .../lib/net35/FluentAssertions.dll | Bin 0 -> 189952 bytes .../lib/net35/FluentAssertions.xml | 6600 ++++++++++++ .../lib/net40/FluentAssertions.dll | Bin 0 -> 191488 bytes .../lib/net40/FluentAssertions.xml | 6720 ++++++++++++ .../lib/net45/FluentAssertions.dll | Bin 0 -> 192000 bytes .../lib/net45/FluentAssertions.xml | 6720 ++++++++++++ .../FluentAssertions.WindowsPhone.dll | Bin 0 -> 181248 bytes .../FluentAssertions.WindowsPhone.xml | 6336 ++++++++++++ .../lib/sl4/FluentAssertions.Silverlight.dll | Bin 0 -> 180736 bytes .../lib/sl4/FluentAssertions.Silverlight.xml | 6398 ++++++++++++ ...o.QualityTools.UnitTesting.Silverlight.dll | Bin 0 -> 63336 bytes ...o.QualityTools.UnitTesting.Silverlight.xml | 3429 +++++++ .../lib/winrt45/FluentAssertions.dll | Bin 0 -> 186880 bytes .../lib/winrt45/FluentAssertions.xml | 6518 ++++++++++++ .../lib/net20/Newtonsoft.Json.dll | Bin 0 -> 488448 bytes .../lib/net20/Newtonsoft.Json.xml | 9054 +++++++++++++++++ .../lib/net35/Newtonsoft.Json.dll | Bin 0 -> 425472 bytes .../lib/net35/Newtonsoft.Json.xml | 8197 +++++++++++++++ .../lib/net40/Newtonsoft.Json.dll | Bin 0 -> 481792 bytes .../lib/net40/Newtonsoft.Json.xml | 8472 +++++++++++++++ .../lib/net45/Newtonsoft.Json.dll | Bin 0 -> 491008 bytes .../lib/net45/Newtonsoft.Json.xml | 8472 +++++++++++++++ .../lib/netcore45/Newtonsoft.Json.dll | Bin 0 -> 440320 bytes .../lib/netcore45/Newtonsoft.Json.xml | 8029 +++++++++++++++ .../Newtonsoft.Json.dll | Bin 0 -> 374784 bytes .../Newtonsoft.Json.xml | 7625 ++++++++++++++ .../Newtonsoft.Json.dll | Bin 0 -> 431616 bytes .../Newtonsoft.Json.xml | 7997 +++++++++++++++ dep/Newtonsoft.Json.6.0.1/tools/install.ps1 | 93 + dep/repositories.config | 1 - .../ThriftConnection.cs | 19 +- .../Connection/HttpConnection.cs | 69 +- src/Elasticsearch.Net/Domain/VoidResponse.cs | 11 + .../Elasticsearch.Net.csproj | 1 + .../Profiling.InMemoryConnection/Program.cs | 13 +- src/Profiling/Profiling.Indexing/Program.cs | 34 +- .../YamlTestsBase.cs | 7 +- .../ElasticsearchConfiguration.cs | 8 +- .../Nest.Tests.Integration.csproj | 16 +- .../RawCalls/ReturnTypesTest.cs | 28 + .../Nest.Tests.Integration/Test.Designer.cs | 4 +- src/Tests/Nest.Tests.Integration/app.config | 14 +- .../Nest.Tests.Integration/packages.config | 4 +- 43 files changed, 100842 insertions(+), 47 deletions(-) create mode 100644 dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.xml create mode 100644 dep/FluentAssertions.2.2.0.0/lib/net40/FluentAssertions.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/net40/FluentAssertions.xml create mode 100644 dep/FluentAssertions.2.2.0.0/lib/net45/FluentAssertions.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/net45/FluentAssertions.xml create mode 100644 dep/FluentAssertions.2.2.0.0/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.xml create mode 100644 dep/FluentAssertions.2.2.0.0/lib/sl4/FluentAssertions.Silverlight.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/sl4/FluentAssertions.Silverlight.xml create mode 100644 dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml create mode 100644 dep/FluentAssertions.2.2.0.0/lib/winrt45/FluentAssertions.dll create mode 100644 dep/FluentAssertions.2.2.0.0/lib/winrt45/FluentAssertions.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net40/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net40/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/netcore45/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/netcore45/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/portable-net45+wp80+win8/Newtonsoft.Json.dll create mode 100644 dep/Newtonsoft.Json.6.0.1/lib/portable-net45+wp80+win8/Newtonsoft.Json.xml create mode 100644 dep/Newtonsoft.Json.6.0.1/tools/install.ps1 create mode 100644 src/Elasticsearch.Net/Domain/VoidResponse.cs create mode 100644 src/Tests/Nest.Tests.Integration/RawCalls/ReturnTypesTest.cs diff --git a/dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.dll b/dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.dll new file mode 100644 index 0000000000000000000000000000000000000000..a838fd65265c8335d56d3300a413053f7c366527 GIT binary patch literal 189952 zcmd4437i~7`TyVBJ=?Q8yE!JuZVpJowKOw32}vMaa^K;;6Yl$l4l{trvg?8Zis4p7 zJc*)$fEOa-fq?fJFTRQxQBnNjeW8fP|NHY)cTdmkCItNcUa$YWcDt*ds(R|Fr=F^M z>Zzj-I`$?n@I0@;|9}4Dc@Oc{Z#R3c|1nDN#JLYo^d9K`<|Yqy9Qe&mjy(IE#=I5v z_^kRV7tA~DlnXD6FP?Ym8T0CwTsZHX3+L^1$Px1{h)+Lb{)7po%@fpz?(KO8b_Cws zPd|Ein%mQ!ze!I=kLRuNJuh_7UH*l8p4_6=n`~}CqFcZ8?d?W5@Y%-%#N6#_Mb%&P zop=S}_s17~?*MZJ-bW0zd76)Tf!B-gp?~_`Mos8TyXJXbS1wi;{{3?P`4^vY*~R$x zdMYWG%F18DGw5QC;)vXPh4sQM7u{Y`C5o6K@X%=YR9W zSAL?+_d2};|K)k-ukG-<4cdGhI?wY)o8EQ0-gEqx8-M5P_q^}pN4;&y=eFuT=$*Ho z7T>nbGhcsv|AKerzxJK|)?LoKcI2&n53K!C9Q~s-bavxkJG}TmJ3d(7JwEWd-|TnI zl4oB1@yFi~j_mTzGyiz+QD^`Br|&DRUGU~x|8v26{o+-)Jed@2KzirL8j+?#Wmd4kRnNbQ=X#B^=C6+aA0oHgkkLX=I zDhK-`7U2avK_Tk!ylOj)@G&r06ISN<5h58@;K0Nf=?VN|yotQ9B^cQhSKsxNt|Kam+aA46%pumBd`As%F-&-LLR!ha87EG)51QDHF z)hb~)B2L1@9a_lPic~X=iM?HY{z{55dsSDzAzRfoqd265tGW`luBJQfh_(V$|Aum- z#!C~rS66vOgFG&V%8saps~FAaxmu}L)3MEt7T}7u=FzuW9M45xh`0ax{YW{rP%iX! zuPPTJ>Z=+}P?6gtWTIdx8VQ@u53$ah}bXT z-Ple@CV_vjl|xUw1c!tqkK1;fQk5Ryo#>|Bk>$3{2Ii%p+C}QCZ$>cykqR>Z$C#tuOcq;-wepYx4_wK~GJc%=vI6Wpt#UR>~fcW=nkee5BA{`*o#Z;QR;=PDf zd&`()zE>4z z)gLfm#Q0rmSn2(6ZFr!3nW)q@F)q{}CTf4$ih}qcBBdhXH)X;fI#|>V9l|p{ln4Ee z?`=XkXsG4JVL(cuKYTdvFc>~UueITkyc$RGsBG#7jicq5<2O2~7rozV2IvN)yz&HU?yB&=c3Gku>NHugc>Itxsyx)`*_G0{vM-vWwGkHJk0^=3< z8$${3adBdiAODbd;|mE}7AO$lo{EWl7>_Ph9wnb{B$&1~L>s6!E(28Pj1Zry$t;9= zbd}{si8SaFuJf9Lrx?W3^lCPxc((kVai3lj3-JuSONEiwfHS^ak0Bn77a%E&UKC+j z-taifn^DB&eOO!G@&8q};GK%BQedg{W&aZO2DQ=@Z|!us!is;F-iXi86;Q19IBX8r zA0f*U(6aRiel$#!mEf8^t=U5c1*f?j)akA8;}K%i8#tra;&Rr&OlQT3Sp8(RNwrPX?A$DAb9mGt23Ox064kWjU9P6TiWlBO(#No5;k~ zh*amMtY(F5f~4VBOO`s6x>ZeUH)U%R7aC+3%_WNUnArfB6JGHMs=etOK;!hTS59M# z_^$%dy2PEXrs5mT{cBN3MBg`{uWtkBo80~K=o@(h)m1CgrM?kI<2oLr0vSA-2irzg zrZKKpj2jd~AcIHf2~0T#qn3*NXhwvXAKysqb@BaH%GEz^xi)S=d48#lU2U=uF=4Bg z`g*F{g~dA(>1rivW>3l)h$^-SL$QBZPcgjVoJEi4+fkd6e-oup?;72qQTl7l5pM=! zth)tAgOZd+1u{4-5Y@k$$7l8U7s`v`=lY6H1|Cfs(GA-==AOWnp|?0#=o;*(6bGk- z^{-KayvPK#$@Qapy%qHfcr@NZ)|Uqn6Txb<1&;|iq)q75g5O;(nD$)lo7!1DH7s|Q z3pbpzU?$U?a_4(BmUJiY_^qIpU2REEUuFE6(22`{i-V8YC0aBaUSwDY5zNS*isSrx4 z1zUI4XHHB>VU~(I-$F>qK2xv?UMpYU|IU2+!a`llv5Bjr7@YfGMGc-o&tw z7qT{?eLL*6GWck>C@y7<0e68jHwNTrazdB(r6~e>A3!>DHV0cO@4JMc%2!$Y= z!K6JMm2$nk8xtR(PEp>BAC;*oKXQdg`jFNdeg`r0Eif0~jYy6oJ#N4$S{J@}uVQEg z=(PfLsQ|t;sg%DvOiMW+qf4_ZK(Lvwj@5=VU;ZQX(^kikNoUYW$HAw-oy`Gr>O^8Z z=}Wqv2~&bZt3XalQw!DesAJ88dYWm9Zk8_%rnX;8=ltI3-ilc^(X=XTCQ)6gLbGPo zIn!ZD>vtgRUsfWky@Yh-n(5_&O}12#gGFj@Z{Sbm<=f4>j`1%0wuWofrSCDZ^=M4x z#=D4J3am}_R2TRWN?EnH*cHDU_+SagdvFXe#p{ai#O3#ER$aBBW3uO)9#Q*h7{8Y= zR441NFN7Z`4<;wq^`&x>2)>OuPXC};J+I*1NsB48tveswtff((+MlbGAno9SOE6k= z3?7zCZ9)~uqE+4TDJW{e@)xi)ZFS8o^J268`$-kHV~nb5n?)<|4(NJVQ=}mEFML%? z24~I48kTHeIV|cp)eX#07wQDGx@$|?CUGVbEonRZ6aJ}wGD*nSGQC*6cV^nwA_~z| zDfbBcp$`DCahSfqjVqI>r+G;|O(bP%lWwnwffgzmxsui~e$QqVoTJ_KY=ZXm^=|(r zIM-l6!`c{j-7zepirs6&yLmV65ru<9H0ersJvgbD6S5TnAOsXa@ndG!S2o( z-Bxm3GrN+J)^(EuUH!{?yU<{EJ^w%d`A?pc6~B)O)4foGO4*+}Q84+FUbzE&+eCaD zEY`P~?X9SG)|c`ctC0-u)I#iuL<;L);F+5z8WUUSPJ|-|%ds#RtQ1G?gEUj3?ibsx z<1s3b!DX~{46H`Qk&mP?Kbpl9$lx;Ux|qFv6ROLN)MED?UEOz>n6z}aj&y&cmdVz5 zQrg|h@t6T0cX7u`9Q!5@c^gu&)a=Rc0oOA%QHoKnG2BcT=VkAnBeQn~R7!X~`j z8h8r@*zg+Y4hDBtEZBsl(RNLcsU+hrvhthO|pedeTyvks@fE9*n^a+T1}WW(mph9yVE z_?p_xxoMy2I^}iHnAAb2rH`t0{fVm5x|DS#*c=x$V`2d&OoysgLdECLLnl)Y7b0VSkPFX%yt-y6UnSPVa}3#nk0_P#)pE9-bvqM(Vu`NGx;Tw zoX%=3RkVoakQn-cw)Q;|66mwo+Epy zOt}*a(PEh3Cna%me>G)s?Q@;ff1L~+^=g{VNTc>?IcH5%z98C$4BCXbsli)=v{dY7 zaCp)>%F$G?HA5y;<)HCpu_P?SU*YYCc~$=uRflR(4hbze#B0TRfs|Rq$4HM^{t6(Xi6W z?$6_Gm913Q+ruCFHYi;|QXLP=g~x2G+*nOe59?4W>#*V_Bf98|mJq2$NBs#jWYhMx zrCTcm`vbm1N>_;ONX|wIVQJgXaqnPS7PaO?))>cI#VjoW_3=HBj#nQ{Wy+236R7%7 zr1jLtCABnDs}DoD{`&YqRut98U~7GJ%}>#_)<+X>YkgQ-pM-AB?4ewLJE>j4HTI+p zHR+7z=jAA@@3sIv^9f=(*5}%3UVftOp)nbu$JAU{KQTp;HxwlmAMHR=l-w;^^Syn% zB-I1E`WHGoOVV2=CKk=bv2PXn>#IqJV@9Ug%&b4@K(;?1Pe9Up$bS7p3RpQ6$Bqz_ zZ<|jlpl#}Hu<;`QSdraQlR3wWgUKR|W6mA@pznGaIijB^WGZWh^kE)zH)p%)VL|pz zLW-pj%lH~x^ncDC6a7>v)b|CpCy^-w{mjz<)zAD)QNvc;@>6EBk(g)jVuGi*H!) zB=pz#*##Fg11ju62yD$1jgK+%c9ISH{S|*mXzQh|y%q6Iz-ZVarB+=%iESyi4bC5v`3-m%46x1cw>Vg>jef^F za9&nO&0C0n53uHk6&V>r-x4i)Y`W1&?p(f^hM+q6UvzYB@OXjh(W$1tC5T0)NdVkSwYs9!

gP5dJ6Xg3j=4RMYDe~2z4 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 literal 0 HcmV?d00001 diff --git a/dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.xml b/dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.xml new file mode 100644 index 00000000000..f0ae5d4604a --- /dev/null +++ b/dep/FluentAssertions.2.2.0.0/lib/net35/FluentAssertions.xml @@ -0,0 +1,6600 @@ + + + + FluentAssertions + + + +

+ Provides extension methods for monitoring and querying events. + + + Contains extension methods for custom assertions in unit tests. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Starts monitoring an object for its events. + + Thrown if eventSource is Null. + + + + Asserts that an object has raised a particular event at least once. + + The object exposing the event. + The name of the event that should have been raised. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised a particular event at least once. + + The object exposing the event. + + The name of the event that should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised a particular event. + + The object exposing the event. + + The name of the event that should not be raised. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised a particular event. + + The object exposing the event. + + The name of the event that should not be raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised, or + null to refer to all properties. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Obtains the for a particular event of the . + + The object for which to get an event recorder. + The name of the event. + + + + + Asserts that all occurences of the event originated from the . + + + + + Asserts that at least one occurrence of the event had an object matching a predicate. + + + + + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. + + + + + Provides methods for asserting the execution time of a method or property. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Provides methods for asserting the execution time of a method or property. + + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the current . + + + + + + Returns a object that can be used to assert the methods returned by the + current . + + + + + + Returns a object that can be used to assert the + current . + + + + + + Returns a object that can be used to assert the properties returned by the + current . + + + + + + Asserts that the properties of an object matches those of another object. + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + Notice that actual behavior is determined by the instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + + + A reference to the configuration object that can be used + to influence the way the object graphs are compared. You can also provide an alternative instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Contains a number of methods to assert that an is in the expectation state. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Contains a number of methods to assert that a reference type object is in the expected state. + + + + + Asserts that the current object has not been initialized yet. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current object has been initialized. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + The expected type of the object. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + + The type that the subject is supposed to be of. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is assignable to a variable of type . + + The type to which the object should be assignable. + The reason why the object should be assignable to the type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the collection does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any duplicate items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any null items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the elements that are not expected. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the unexpected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection only contains items that are assignable to the type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in the specified . + Elements are compared using their implementation. + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + + + Asserts that the collection is a subset of the . + + An with the expected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection is not a subset of the . + + An with the unexpected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Assert that the current collection has the same number of elements as . + + The other collection with the same expected number of elements + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection has the supplied at the + supplied . + + The index where the element is expected + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection does not contain the supplied item. + + The element that is not expected to be in the collection + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection shares one or more items with the specified . + + The with the expected shared items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not share any items with the specified . + + The to compare to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that two collections contain the same items in the same order, where equality is determined using a + predicate. + + + The collection to compare the subject with. + + + A predicate the is used to determine whether two objects should be treated as equal. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + The expectation item. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains at least one item that matches the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Expects the current collection to contain only a single item matching the specified . + + The predictes that will be used to find the matching items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Gets the active configuration, + + + + + Gets or sets the mode on how Fluent Assertions will find custom implementations of + . + + + + + Gets or sets the assembly name to scan for custom value formatters in case + is set to . + + + + + Maintains the framework-specific services. + + + + + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Joins a string with one or more other strings using a specified separator. + + + Any string that is empty (including the original string) is ignored. + + + + + Changes the first character of a string to uppercase. + + + + + Determines whether two objects refer to the same property. + + + + + Finds the property by a case-sensitive name. + + + Returns null if no such property exists. + + + + + Determines whether the specified method has been annotated with a specific attribute. + + + true if the specified method has attribute; otherwise, false. + + + + + Defines the modes in which custom implementations of are detected as configured + through . + + + + + Detection is disabled. + + + + + Only custom value formatters exposed through the assembly set in + are detected. + + + + + All custom value formatters in any assembly loaded in the current will be detected. + + + + + Represents a collection of assertion results obtained through a . + + + + + Adds the failures (if any) resulting from executing an assertion within a + identified by a key. + + + + + Returns the closest match compared to the set identified by the provided or + an empty array if one of the results represents a succesful assertion. + + + The closest match is the set that contains the least amount of failures, or no failures at all, and preferably + the set that is identified by the . + + + + + Gets a value indicating whether this collection contains a set without any failures at all. + + + + + Defines a step in the process of comparing two object graphs for structural equivalency. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Defines a strategy for handling failures in a . + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Specialized value formatter that looks for static methods in the caller's assembly marked with the + . + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Marks a static method as a kind of for a particular type. + + + + + Contains a number of methods to assert that an yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Initializes a new instance of the class. + + + + + Selection rule that adds all public properties of the subject as far as they are defined on the declared + type. + + + + + Represents a rule that defines which properties of the subject-under-test to include while comparing + two objects for structural equality. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + Type info about the subject. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Selection rule that adds all public properties of the subject based on its run-time type rather than its + declared type. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + General purpose implementation of that uses a predicate to determine whether + this rule applies to a particular property and executes an action to assert equality. + + The type of the subject. + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides the required information for executing an equality assertion between a subject and an expectation. + + The type of the subject. + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the value of the + + + + + Gets the value of the expectation object that was matched with the subject using a . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Selection rule that removes a particular property from the structural comparison based on a predicate. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides details about the subject's root or nested property. + + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the full path from the root object until the current object separated by dots. + + + + + Gets a display-friendly representation of the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Provides the run-time details of the class. + + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets or sets a value indicating whether or not the assertion must perform a deep comparison. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Represents a selection context of a nested property + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for the exact run-time behavior of a structural equality comparison. + + The type of the subject. + + + + Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects + or collections. + + + + + Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, + and includes the entire object graph. The names of the properties between the subject and expectation must match. + + + + + Adds all public properties of the subject as far as they are defined on the declared type. + + + + + Adds all public properties of the subject based on its run-time type rather than its declared type. + + + + + Tries to match the properties of the subject with equally named properties on the expectation. Ignores those + properties that don't exist on the expectation. + + + + + Requires the expectation to have properties which are equally named to properties on the subject. + + + + + + Excludes the specified (nested) property from the structural equality check. + + + + + Excludes a (nested) property based on a predicate from the structural equality check. + + + + + Includes the specified property in the equality check. + + + This overrides the default behavior of including all declared properties. + + + + + The assertion to execute when the predicate is met. + + + + + Causes the structural equality check to include nested collections and complex types. + + + + + Causes the structural equality check to exclude nested collections and complex types. + + + Behaves similarly to the old property assertions API. + + + + + Causes the structural equality check to ignore any cyclic references. + + + By default, cyclic references within the object graph will cause an exception to be thrown. + + + + + Clears all selection rules, including those that were added by default. + + + + + Clears all matching rules, including those that were added by default. + + + + + Adds a selection rule to the ones already added by default, and which is evaluated after all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules + + + + + Causes all collections to be compared in the order in which the items appear in the expectation. + + + + + Causes the collection identified by to be compared in the order + in which the items appear in the expectation. + + + + + Causes the collection identified by the provided to be compared in the order + in which the items appear in the expectation. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets value indicating whether the equality check will include nested collections and complex types. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Defines additional overrides when used with + + + + + Allows overriding the way structural equality is applied to (nested) objects of tyoe + + + + + Allows overriding the way structural equality is applied to particular properties. + + + A predicate based on the of the subject that is used to identify the property for which the + override applies. + + + + + Defines a rule that is used to determine whether the order of items in collections is relevant or not. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + An ordering rule that basically states that the order of items in all collections is important. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Represents a rule for determining whether or not a certain collection within the object graph should be compared using + strict ordering. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Collection of s. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Determines whether the rules in this collection dictate strict ordering during the equivalency assertion on + the collection pointed to by . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the verificationScope subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Executes a single equivalency assertion on two collections, optionally recursive and with or without strict ordering. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the subject is considered equal to another object according to the implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is not equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must match except for the casing of the characters. + + + + + The message must start with the exact text, including the casing of the characters.. + + + The message must match exactly, including the casing of the characters. + + + + + The message must start with the text except for the casing of the characters. + + + + + The message must contain the exact text. + + + + + The message must contain the text except for the casing of the characters. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Indication of how cyclic references should be handled when validating equality of nested properties. + + + + + Cyclic references will be ignored. + + + + + Cyclic references will result in an exception. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + The expected number of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + The predicate which must be statisfied by the amount of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The expected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The unexpected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a is in the correct state. + + + + + Asserts that the is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not equal to the GUID. + + The unexpected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Selection rule that removes a particular property from the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a rule that defines how to map the properties from the subject-under-test with the properties + on the expectation object. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Selection rule that includes a particular property in the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Provides information on a particular property during an assertion for structural equality of two object graphs. + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the value of the + + + + + Requires the expectation object to have a property with the exact same name. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Finds a property of the expectation with the exact same name, but doesn't require it. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Static class that allows for a 'fluent' selection of the types from an . + + + AllTypes.From(myAssembly)
+ .ThatImplement<ISomeInterface>
+ .Should()
+ .BeDecoratedWith<SomeAttribute>() +
+
+ + + Returns a for selecting the types that are visible outside the + specified . + + The assembly from which to select the types. + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class. + + The method to assert. + + + + Initializes a new instance of the class. + + The methods to assert. + + + + Asserts that the selected methods are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of methods of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select methods. + + + + Initializes a new instance of the class. + + The types from which to select methods. + + + + Only select the methods that return the specified type + + + + + Only select the methods that are decorated with an attribute of the specified type. + + + + + The resulting objects. + + + + + Determines whether the specified method has a special name (like properties and events). + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the methods that are public or internal. + + + + + Only select the methods without a return value + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Is responsible for validating the equality of one or more properties of a subject with another object. + + + + + Provides access the list of steps that are executed in the order of appearance during an equivalency test. + + + + + Keeps track of objects and their location within an object graph so that cyclic references can be detected + and handled upon. + + + + + Custom version of ICloneable that works on all frameworks. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Determines whether the specified object reference is a cyclic reference to the same object earlier in the + equivalency validation. + + + The behavior of a cyclic reference is determined byt he constructor + parameter. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an object tracked by the including it's location within an object graph. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Provides methods for asserting that the execution time of an satifies certain conditions. + + + + + Initializes a new instance of the class. + + The action of which the execution time must be asserted. + + + + Asserts that the execution time of the operation does not exceed a specified amount of time. + + + The maximum allowed duration. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides methods for asserting that the execution time of an object member satifies certain conditions. + + + + + + Initializes a new instance of the class. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the value of the + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Contains a number of extension methods for floating point . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class, for a single . + + The property to assert. + + + + Initializes a new instance of the class, for a number of objects. + + The properties to assert. + + + + Asserts that the selected properties are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected properties have a setter. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of properties of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select properties. + + + + Initializes a new instance of the class. + + The types from which to select properties. + + + + Only select the properties that are decorated with an attribute of the specified type. + + + + + Only select the properties that return the specified type + + + + + The resulting objects. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the properties that have a public or internal getter. + + + + + Dedicated class for comparing two strings and generating consistent error messages. + + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Extension methods for getting method and property selectors for a type. + + + + + Returns the types that are visible outside the specified . + + + + + Returns a method selector for the current . + + + + + Returns a method selector for the current . + + + + + Returns a property selector for the current . + + + + + Returns a property selector for the current . + + + + + Allows for fluent filtering a list of types. + + + + + The resulting objects. + + + + + Determines whether a type is a subclass of another type, but NOT the same type. + + + + + Determines whether a type implements an interface (but is not the interface itself). + + + + + Determines whether a type is decorated with a particular attribute. + + + + + Determines whether the namespace of type is exactly . + + + + + Determines whether the namespace of type is starts with . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Contains a number of methods to assert that all s in a + meet certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the attribute. + + The expected attribute + + + + Asserts that the current equals the attribute. + + The expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The full name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the element. + + The expected element + + + + Asserts that the current equals the element. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30) +
+ +
+ + + Returns a new value for the specified and + in the month January. + + + + + Returns a new value for the specified and + in the month February. + + + + + Returns a new value for the specified and + in the month March. + + + + + Returns a new value for the specified and + in the month April. + + + + + Returns a new value for the specified and + in the month May. + + + + + Returns a new value for the specified and + in the month June. + + + + + Returns a new value for the specified and + in the month July. + + + + + Returns a new value for the specified and + in the month August. + + + + + Returns a new value for the specified and + in the month September. + + + + + Returns a new value for the specified and + in the month October. + + + + + Returns a new value for the specified and + in the month November. + + + + + Returns a new value for the specified and + in the month December. + + + + + Returns a new value for the specified and . + + + + + Returns a new value for the specified and time with the specified + , and optionally . + + + + + Returns a new value that is the current before the + specified . + + + + + Returns a new value that is the current after the + specified . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that the time difference of the current is greater than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is equal to the + specified time. + + The expected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is not equal to the + specified time. + + The unexpected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()). +
+ +
+ + + Returns a based on a number of milliseconds. + + + + + Returns a based on a number of seconds. + + + + + Returns a based on a number of seconds, and add the specified + . + + + + + Returns a based on a number of minutes. + + + + + Returns a based on a number of minutes, and add the specified + . + + + + + Returns a based on a number of hours. + + + + + Returns a based on a number of hours, and add the specified + . + + + + + Returns a based on a number of days. + + + + + Returns a based on a number of days, and add the specified + . + + + + + Convenience method for chaining multiple calls to the methods provided by this class. + + + 23.Hours().And(59.Minutes()) + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. + + + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + Static methods that aid in generic event subscription + + + + + Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder + when invoked. + + + + + Finds the Return Type of a Delegate. + + + + + Returns an Array of Types that make up a delegate's parameter signature. + + + + + Returns an array of types appended with an EventRecorder reference at the beginning. + + + + + Returns T/F Dependent on a Type Being a Delegate. + + + + + Returns the MethodInfo for the Delegate's "Invoke" Method. + + + + + This class is used to store data about an intercepted event + + + + + Default constructor stores the parameters the event was raised with + + + + + Parameters for the event + + + + + Simple dictionary that uses a to the event source as the key. + This should ensure the Garbage Collector can still clean-up the event source object. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + The value for which to create a . + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + Indicates whether the formatter should use line breaks when the specific supports it. + + + A that represents this instance. + + + + + Ensures a custom formatter is included in the chain, just before the default formatter is executed. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection contains the specified object. Elements are compared + using their implementation. + + An object, or of objects that are expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that the current is exactly equal to the value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equal to the value. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + The that the current value is expected to be before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + The that the current value is expected to be on or before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + The that the current value is expected to be after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + The that the current value is expected to be on or after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + The expected year of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + The expected month of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + The expected day of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + The expected hour of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + The expected minutes of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + The expected seconds of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that an is in the correct state. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable boolean value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable boolean value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that an object equals another object using its implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object does not equal another object using it's method. + + The unexpected value + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to the exact same object as another object reference. + + The expected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to a different object than another object reference refers to. + + The unexpected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object can be serialized and deserialized using the XML serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Provides methods for selecting one or more properties of an object and comparing them with another object. + + + + + Includes all properties of when comparing the subject with another object using . + + + + + Includes all properties of including those of the run-time type when comparing the subject + with another object using . + + + + + Includes all properties of when comparing the subject with another object using , + except those that the other object does not have. + + + + + Perform recursive property comparison of the child properties for objects that are of incompatible type. + + + Indication of how cyclic references in the nested properties should be handled. By default this will result in an + exception, but if is specified, cyclic references will just be ignored. + + + + + Includes all properties of when comparing the subject with another object using , + except those specified using a property expression. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Excludes the properties specified by the from the comparison. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Includes only those properties of when comparing the subject with another object using + that were specified using a property expression. + + A single property expression to include. + Optional list of additional property expressions to include. + + + + Asserts that the previously selected properties of have the same value as the equally named + properties of . + + The object to compare the current object with + + Property values are considered equal if, after converting them to the requested type, calling + returns true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + + The expected string. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not exactly the same as the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to be equivalent to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts exactly with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains another (fragment of a) string. + + + The (fragement of a) string that the current string should contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain another (fragment of a) string. + + + The (fragement of a) string that the current string should not contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain the specified string, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string has the specified length. + + The expected length of the string + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is neither null nor . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that two objects differ in the expected way. + + + You can use the and for a more fluent + way of specifying a or a . + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides the logic and the display text for a . + + + + + Contains a number of methods to assert that a meets certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current type is equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is equal to the specified type. + + The expected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Creates an error message in case the specifed type differs from the + type. + + + An empty if the two specified types are the same, or an error message that describes that + the two specified types are not the same. + + + + + Asserts that the current type is not equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is not equal to the specified type. + + The unexpected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + + + + + Gets an object that wraps and executes a conditional or unconditional assertion. + + + + + Throws a generic exception in case no other test harness is detected. + + + + + Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Represents an implicit or explicit scope within which multiple assertions can be collected. + + + + + Represents the phrase that can be used in as a placeholder for the reason of an assertion. + + + + + Initializes a new instance of the class. + + + + + Specify the condition that must be satisfied. + + If true the assertion will be succesful. + + + + Specify the reason why you expect the condition to be true. + + + A formatted phrase explaining why the condition should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Define the failure message for the assertion. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Discards and returns the failures that happened up to now. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets data associated with the current scope and identified by . + + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Determines whether data associated with an should be included in the assertion failure. + + + + + Represents a collection of data items that are associated with an . + + + + diff --git a/dep/FluentAssertions.2.2.0.0/lib/net40/FluentAssertions.dll b/dep/FluentAssertions.2.2.0.0/lib/net40/FluentAssertions.dll new file mode 100644 index 0000000000000000000000000000000000000000..d35f971f323b787de21f005f2fb75b891384f041 GIT binary patch literal 191488 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�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 R( + + + FluentAssertions + + + +

+ Initializes a new instance of the class. + + + + + Contains extension methods for custom assertions in unit tests. + + + Provides extension methods for monitoring and querying events. + + + + + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. + + + + + Provides methods for asserting the execution time of a method or property. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Provides methods for asserting the execution time of a method or property. + + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the current . + + + + + + Returns a object that can be used to assert the methods returned by the + current . + + + + + + Returns a object that can be used to assert the + current . + + + + + + Returns a object that can be used to assert the properties returned by the + current . + + + + + + Asserts that the properties of an object matches those of another object. + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + Notice that actual behavior is determined by the instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + + + A reference to the configuration object that can be used + to influence the way the object graphs are compared. You can also provide an alternative instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Starts monitoring an object for its events. + + Thrown if eventSource is Null. + + + + Asserts that an object has raised a particular event at least once. + + The object exposing the event. + The name of the event that should have been raised. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised a particular event at least once. + + The object exposing the event. + + The name of the event that should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised a particular event. + + The object exposing the event. + + The name of the event that should not be raised. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised a particular event. + + The object exposing the event. + + The name of the event that should not be raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised, or + null to refer to all properties. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Obtains the for a particular event of the . + + The object for which to get an event recorder. + The name of the event. + + + + + Asserts that all occurences of the event originated from the . + + + + + Asserts that at least one occurrence of the event had an object matching a predicate. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Contains a number of methods to assert that a reference type object is in the expected state. + + + + + Asserts that the current object has not been initialized yet. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current object has been initialized. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + The expected type of the object. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + + The type that the subject is supposed to be of. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is assignable to a variable of type . + + The type to which the object should be assignable. + The reason why the object should be assignable to the type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the collection does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any duplicate items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any null items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the elements that are not expected. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the unexpected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection only contains items that are assignable to the type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in the specified . + Elements are compared using their implementation. + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + + + Asserts that the collection is a subset of the . + + An with the expected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection is not a subset of the . + + An with the unexpected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Assert that the current collection has the same number of elements as . + + The other collection with the same expected number of elements + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection has the supplied at the + supplied . + + The index where the element is expected + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection does not contain the supplied item. + + The element that is not expected to be in the collection + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection shares one or more items with the specified . + + The with the expected shared items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not share any items with the specified . + + The to compare to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expectation state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that two collections contain the same items in the same order, where equality is determined using a + predicate. + + + The collection to compare the subject with. + + + A predicate the is used to determine whether two objects should be treated as equal. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + The expectation item. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains at least one item that matches the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Expects the current collection to contain only a single item matching the specified . + + The predictes that will be used to find the matching items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + The expected number of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + The predicate which must be statisfied by the amount of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The expected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The unexpected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection contains the specified object. Elements are compared + using their implementation. + + An object, or of objects that are expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Gets the active configuration, + + + + + Gets or sets the mode on how Fluent Assertions will find custom implementations of + . + + + + + Gets or sets the assembly name to scan for custom value formatters in case + is set to . + + + + + Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. + + + + + Maintains the framework-specific services. + + + + + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Joins a string with one or more other strings using a specified separator. + + + Any string that is empty (including the original string) is ignored. + + + + + Changes the first character of a string to uppercase. + + + + + Determines whether two objects refer to the same property. + + + + + Finds the property by a case-sensitive name. + + + Returns null if no such property exists. + + + + + Determines whether the specified method has been annotated with a specific attribute. + + + true if the specified method has attribute; otherwise, false. + + + + + Defines the modes in which custom implementations of are detected as configured + through . + + + + + Detection is disabled. + + + + + Only custom value formatters exposed through the assembly set in + are detected. + + + + + All custom value formatters in any assembly loaded in the current will be detected. + + + + + Represents a collection of assertion results obtained through a . + + + + + Adds the failures (if any) resulting from executing an assertion within a + identified by a key. + + + + + Returns the closest match compared to the set identified by the provided or + an empty array if one of the results represents a succesful assertion. + + + The closest match is the set that contains the least amount of failures, or no failures at all, and preferably + the set that is identified by the . + + + + + Gets a value indicating whether this collection contains a set without any failures at all. + + + + + Defines a step in the process of comparing two object graphs for structural equivalency. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Static methods that aid in generic event subscription + + + + + Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder + when invoked. + + + + + Finds the Return Type of a Delegate. + + + + + Returns an Array of Types that make up a delegate's parameter signature. + + + + + Returns an array of types appended with an EventRecorder reference at the beginning. + + + + + Returns T/F Dependent on a Type Being a Delegate. + + + + + Returns the MethodInfo for the Delegate's "Invoke" Method. + + + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + Simple dictionary that uses a to the event source as the key. + This should ensure the Garbage Collector can still clean-up the event source object. + + + + + This class is used to store data about an intercepted event + + + + + Default constructor stores the parameters the event was raised with + + + + + Parameters for the event + + + + + Defines a strategy for handling failures in a . + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + + + + + Gets an object that wraps and executes a conditional or unconditional assertion. + + + + + Throws a generic exception in case no other test harness is detected. + + + + + Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Represents an implicit or explicit scope within which multiple assertions can be collected. + + + + + Represents the phrase that can be used in as a placeholder for the reason of an assertion. + + + + + Initializes a new instance of the class. + + + + + Specify the condition that must be satisfied. + + If true the assertion will be succesful. + + + + Specify the reason why you expect the condition to be true. + + + A formatted phrase explaining why the condition should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Define the failure message for the assertion. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Discards and returns the failures that happened up to now. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets data associated with the current scope and identified by . + + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Determines whether data associated with an should be included in the assertion failure. + + + + + Represents a collection of data items that are associated with an . + + + + + Custom version of ICloneable that works on all frameworks. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30) +
+ +
+ + + Returns a new value for the specified and + in the month January. + + + + + Returns a new value for the specified and + in the month February. + + + + + Returns a new value for the specified and + in the month March. + + + + + Returns a new value for the specified and + in the month April. + + + + + Returns a new value for the specified and + in the month May. + + + + + Returns a new value for the specified and + in the month June. + + + + + Returns a new value for the specified and + in the month July. + + + + + Returns a new value for the specified and + in the month August. + + + + + Returns a new value for the specified and + in the month September. + + + + + Returns a new value for the specified and + in the month October. + + + + + Returns a new value for the specified and + in the month November. + + + + + Returns a new value for the specified and + in the month December. + + + + + Returns a new value for the specified and . + + + + + Returns a new value for the specified and time with the specified + , and optionally . + + + + + Returns a new value that is the current before the + specified . + + + + + Returns a new value that is the current after the + specified . + + + + + Specialized value formatter that looks for static methods in the caller's assembly marked with the + . + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + The value for which to create a . + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + Indicates whether the formatter should use line breaks when the specific supports it. + + + A that represents this instance. + + + + + Ensures a custom formatter is included in the chain, just before the default formatter is executed. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Marks a static method as a kind of for a particular type. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of extension methods for floating point . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the subject is considered equal to another object according to the implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is not equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must match except for the casing of the characters. + + + + + The message must start with the exact text, including the casing of the characters.. + + + The message must match exactly, including the casing of the characters. + + + + + The message must start with the text except for the casing of the characters. + + + + + The message must contain the exact text. + + + + + The message must contain the text except for the casing of the characters. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Contains a number of methods to assert that a is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that the current is exactly equal to the value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equal to the value. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + The that the current value is expected to be before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + The that the current value is expected to be on or before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + The that the current value is expected to be after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + The that the current value is expected to be on or after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + The expected year of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + The expected month of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + The expected day of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + The expected hour of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + The expected minutes of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + The expected seconds of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a is in the correct state. + + + + + Asserts that the is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not equal to the GUID. + + The unexpected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable boolean value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable boolean value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that the time difference of the current is greater than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is equal to the + specified time. + + The expected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is not equal to the + specified time. + + The unexpected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that an object equals another object using its implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object does not equal another object using it's method. + + The unexpected value + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to the exact same object as another object reference. + + The expected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to a different object than another object reference refers to. + + The unexpected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object can be serialized and deserialized using the XML serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + + The expected string. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not exactly the same as the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to be equivalent to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts exactly with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains another (fragment of a) string. + + + The (fragement of a) string that the current string should contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain another (fragment of a) string. + + + The (fragement of a) string that the current string should not contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain the specified string, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string has the specified length. + + The expected length of the string + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is neither null nor . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Dedicated class for comparing two strings and generating consistent error messages. + + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Contains a number of methods to assert that two objects differ in the expected way. + + + You can use the and for a more fluent + way of specifying a or a . + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides the logic and the display text for a . + + + + + Contains a number of methods to assert that an yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the correct state. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Returns the type of the subject the assertion applies on. + + + + + Provides methods for asserting that the execution time of an satifies certain conditions. + + + + + Initializes a new instance of the class. + + The action of which the execution time must be asserted. + + + + Asserts that the execution time of the operation does not exceed a specified amount of time. + + + The maximum allowed duration. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides methods for asserting that the execution time of an object member satifies certain conditions. + + + + + + Initializes a new instance of the class. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + + + Selection rule that adds all public properties of the subject as far as they are defined on the declared + type. + + + + + Represents a rule that defines which properties of the subject-under-test to include while comparing + two objects for structural equality. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + Type info about the subject. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Selection rule that adds all public properties of the subject based on its run-time type rather than its + declared type. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + General purpose implementation of that uses a predicate to determine whether + this rule applies to a particular property and executes an action to assert equality. + + The type of the subject. + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides the required information for executing an equality assertion between a subject and an expectation. + + The type of the subject. + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the value of the + + + + + Gets the value of the expectation object that was matched with the subject using a . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Selection rule that removes a particular property from the structural comparison based on a predicate. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides details about the subject's root or nested property. + + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the full path from the root object until the current object separated by dots. + + + + + Gets a display-friendly representation of the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Represents a selection context of a nested property + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for the exact run-time behavior of a structural equality comparison. + + The type of the subject. + + + + Provides the run-time details of the class. + + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets or sets a value indicating whether or not the assertion must perform a deep comparison. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects + or collections. + + + + + Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, + and includes the entire object graph. The names of the properties between the subject and expectation must match. + + + + + Adds all public properties of the subject as far as they are defined on the declared type. + + + + + Adds all public properties of the subject based on its run-time type rather than its declared type. + + + + + Tries to match the properties of the subject with equally named properties on the expectation. Ignores those + properties that don't exist on the expectation. + + + + + Requires the expectation to have properties which are equally named to properties on the subject. + + + + + + Excludes the specified (nested) property from the structural equality check. + + + + + Excludes a (nested) property based on a predicate from the structural equality check. + + + + + Includes the specified property in the equality check. + + + This overrides the default behavior of including all declared properties. + + + + + The assertion to execute when the predicate is met. + + + + + Causes the structural equality check to include nested collections and complex types. + + + + + Causes the structural equality check to exclude nested collections and complex types. + + + Behaves similarly to the old property assertions API. + + + + + Causes the structural equality check to ignore any cyclic references. + + + By default, cyclic references within the object graph will cause an exception to be thrown. + + + + + Clears all selection rules, including those that were added by default. + + + + + Clears all matching rules, including those that were added by default. + + + + + Adds a selection rule to the ones already added by default, and which is evaluated after all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules + + + + + Causes all collections to be compared in the order in which the items appear in the expectation. + + + + + Causes the collection identified by to be compared in the order + in which the items appear in the expectation. + + + + + Causes the collection identified by the provided to be compared in the order + in which the items appear in the expectation. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets value indicating whether the equality check will include nested collections and complex types. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Defines additional overrides when used with + + + + + Allows overriding the way structural equality is applied to (nested) objects of tyoe + + + + + Allows overriding the way structural equality is applied to particular properties. + + + A predicate based on the of the subject that is used to identify the property for which the + override applies. + + + + + Defines a rule that is used to determine whether the order of items in collections is relevant or not. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + An ordering rule that basically states that the order of items in all collections is important. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Represents a rule for determining whether or not a certain collection within the object graph should be compared using + strict ordering. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Collection of s. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Determines whether the rules in this collection dictate strict ordering during the equivalency assertion on + the collection pointed to by . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Indication of how cyclic references should be handled when validating equality of nested properties. + + + + + Cyclic references will be ignored. + + + + + Cyclic references will result in an exception. + + + + + Gets a value indicating whether this step can handle the verificationScope subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Executes a single equivalency assertion on two collections, optionally recursive and with or without strict ordering. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Selection rule that removes a particular property from the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a rule that defines how to map the properties from the subject-under-test with the properties + on the expectation object. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Selection rule that includes a particular property in the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Provides information on a particular property during an assertion for structural equality of two object graphs. + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the value of the + + + + + Requires the expectation object to have a property with the exact same name. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides methods for selecting one or more properties of an object and comparing them with another object. + + + + + Includes all properties of when comparing the subject with another object using . + + + + + Includes all properties of including those of the run-time type when comparing the subject + with another object using . + + + + + Includes all properties of when comparing the subject with another object using , + except those that the other object does not have. + + + + + Perform recursive property comparison of the child properties for objects that are of incompatible type. + + + Indication of how cyclic references in the nested properties should be handled. By default this will result in an + exception, but if is specified, cyclic references will just be ignored. + + + + + Includes all properties of when comparing the subject with another object using , + except those specified using a property expression. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Excludes the properties specified by the from the comparison. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Includes only those properties of when comparing the subject with another object using + that were specified using a property expression. + + A single property expression to include. + Optional list of additional property expressions to include. + + + + Asserts that the previously selected properties of have the same value as the equally named + properties of . + + The object to compare the current object with + + Property values are considered equal if, after converting them to the requested type, calling + returns true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the value of the + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for validating the equality of one or more properties of a subject with another object. + + + + + Provides access the list of steps that are executed in the order of appearance during an equivalency test. + + + + + Keeps track of objects and their location within an object graph so that cyclic references can be detected + and handled upon. + + + + + Determines whether the specified object reference is a cyclic reference to the same object earlier in the + equivalency validation. + + + The behavior of a cyclic reference is determined byt he constructor + parameter. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an object tracked by the including it's location within an object graph. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Finds a property of the expectation with the exact same name, but doesn't require it. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()). +
+ +
+ + + Returns a based on a number of milliseconds. + + + + + Returns a based on a number of seconds. + + + + + Returns a based on a number of seconds, and add the specified + . + + + + + Returns a based on a number of minutes. + + + + + Returns a based on a number of minutes, and add the specified + . + + + + + Returns a based on a number of hours. + + + + + Returns a based on a number of hours, and add the specified + . + + + + + Returns a based on a number of days. + + + + + Returns a based on a number of days, and add the specified + . + + + + + Convenience method for chaining multiple calls to the methods provided by this class. + + + 23.Hours().And(59.Minutes()) + + + + + Extension methods for getting method and property selectors for a type. + + + + + Returns the types that are visible outside the specified . + + + + + Returns a method selector for the current . + + + + + Returns a method selector for the current . + + + + + Returns a property selector for the current . + + + + + Returns a property selector for the current . + + + + + Static class that allows for a 'fluent' selection of the types from an . + + + AllTypes.From(myAssembly)
+ .ThatImplement<ISomeInterface>
+ .Should()
+ .BeDecoratedWith<SomeAttribute>() +
+
+ + + Returns a for selecting the types that are visible outside the + specified . + + The assembly from which to select the types. + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class. + + The method to assert. + + + + Initializes a new instance of the class. + + The methods to assert. + + + + Asserts that the selected methods are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of methods of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select methods. + + + + Initializes a new instance of the class. + + The types from which to select methods. + + + + Only select the methods that return the specified type + + + + + Only select the methods that are decorated with an attribute of the specified type. + + + + + The resulting objects. + + + + + Determines whether the specified method has a special name (like properties and events). + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the methods that are public or internal. + + + + + Only select the methods without a return value + + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class, for a single . + + The property to assert. + + + + Initializes a new instance of the class, for a number of objects. + + The properties to assert. + + + + Asserts that the selected properties are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected properties have a setter. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of properties of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select properties. + + + + Initializes a new instance of the class. + + The types from which to select properties. + + + + Only select the properties that are decorated with an attribute of the specified type. + + + + + Only select the properties that return the specified type + + + + + The resulting objects. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the properties that have a public or internal getter. + + + + + Contains a number of methods to assert that a meets certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current type is equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is equal to the specified type. + + The expected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Creates an error message in case the specifed type differs from the + type. + + + An empty if the two specified types are the same, or an error message that describes that + the two specified types are not the same. + + + + + Asserts that the current type is not equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is not equal to the specified type. + + The unexpected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent filtering a list of types. + + + + + The resulting objects. + + + + + Determines whether a type is a subclass of another type, but NOT the same type. + + + + + Determines whether a type implements an interface (but is not the interface itself). + + + + + Determines whether a type is decorated with a particular attribute. + + + + + Determines whether the namespace of type is exactly . + + + + + Determines whether the namespace of type is starts with . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Contains a number of methods to assert that all s in a + meet certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the attribute. + + The expected attribute + + + + Asserts that the current equals the attribute. + + The expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The full name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the element. + + The expected element + + + + Asserts that the current equals the element. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of methods to assert that an asynchronous method yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the that is being asserted. + + + + diff --git a/dep/FluentAssertions.2.2.0.0/lib/net45/FluentAssertions.dll b/dep/FluentAssertions.2.2.0.0/lib/net45/FluentAssertions.dll new file mode 100644 index 0000000000000000000000000000000000000000..60da7c6e9a0da29f2fea34fbbf9bd34c88e4a5dd GIT binary patch literal 192000 zcmd3v2b>(mvH$00_Ga()PGP0vPC9`kf{x*KSAf9eAP`Z25IN@@2k#wM<}V{AYK zgTXd77=!^oC%}P+!2#op?Pon_`+=MjIA{C4C;s1G^~~(--YJ0p|Ig>Y(#>>NcUMX%|_b>|t-Xn(Ez|G6z!0RRU%OLPJZ$dX7n(ujCxm;bu56Q(BUU}ZD zuOxou&mfjGYb(M0Z$7PASZ~zN0cf<%hd?#>m#rBW(_IVe=Up0;QM7u{EFO5jo{(>U zCFg(3#aDi!&G$OJpCSW=g70-3w0T)R-}A9Zs6`_ZM(T_5|GyzXj3 z+Nrbl{_d(Le*J^(F4*DV^B+I<^gnI;`NsU}li$614?pVnypkV`4saWu>yIRN0}n6t zM`kH`WH#4$P+2^0<_^BMB`xakymDg>uu|xc(%Gdj7~Mj*b>UoYjd@ KF=d?DL1wuzv@ytl`J6YDw*qAF-%zq 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

)ow?+WKVc-?aX)^^doFcFQ-n{M(j)-!i>z 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 + + + FluentAssertions + + + +

+ Initializes a new instance of the class. + + + + + Contains extension methods for custom assertions in unit tests. + + + Provides extension methods for monitoring and querying events. + + + + + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. + + + + + Provides methods for asserting the execution time of a method or property. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Provides methods for asserting the execution time of a method or property. + + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the current . + + + + + + Returns a object that can be used to assert the methods returned by the + current . + + + + + + Returns a object that can be used to assert the + current . + + + + + + Returns a object that can be used to assert the properties returned by the + current . + + + + + + Asserts that the properties of an object matches those of another object. + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + Notice that actual behavior is determined by the instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + + + A reference to the configuration object that can be used + to influence the way the object graphs are compared. You can also provide an alternative instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Starts monitoring an object for its events. + + Thrown if eventSource is Null. + + + + Asserts that an object has raised a particular event at least once. + + The object exposing the event. + The name of the event that should have been raised. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised a particular event at least once. + + The object exposing the event. + + The name of the event that should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised a particular event. + + The object exposing the event. + + The name of the event that should not be raised. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised a particular event. + + The object exposing the event. + + The name of the event that should not be raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised, or + null to refer to all properties. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Obtains the for a particular event of the . + + The object for which to get an event recorder. + The name of the event. + + + + + Asserts that all occurences of the event originated from the . + + + + + Asserts that at least one occurrence of the event had an object matching a predicate. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Contains a number of methods to assert that a reference type object is in the expected state. + + + + + Asserts that the current object has not been initialized yet. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current object has been initialized. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + The expected type of the object. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + + The type that the subject is supposed to be of. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is assignable to a variable of type . + + The type to which the object should be assignable. + The reason why the object should be assignable to the type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the collection does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any duplicate items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any null items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the elements that are not expected. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the unexpected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection only contains items that are assignable to the type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in the specified . + Elements are compared using their implementation. + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + + + Asserts that the collection is a subset of the . + + An with the expected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection is not a subset of the . + + An with the unexpected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Assert that the current collection has the same number of elements as . + + The other collection with the same expected number of elements + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection has the supplied at the + supplied . + + The index where the element is expected + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection does not contain the supplied item. + + The element that is not expected to be in the collection + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection shares one or more items with the specified . + + The with the expected shared items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not share any items with the specified . + + The to compare to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expectation state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that two collections contain the same items in the same order, where equality is determined using a + predicate. + + + The collection to compare the subject with. + + + A predicate the is used to determine whether two objects should be treated as equal. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + The expectation item. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains at least one item that matches the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Expects the current collection to contain only a single item matching the specified . + + The predictes that will be used to find the matching items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + The expected number of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + The predicate which must be statisfied by the amount of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The expected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The unexpected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection contains the specified object. Elements are compared + using their implementation. + + An object, or of objects that are expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Gets the active configuration, + + + + + Gets or sets the mode on how Fluent Assertions will find custom implementations of + . + + + + + Gets or sets the assembly name to scan for custom value formatters in case + is set to . + + + + + Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. + + + + + Maintains the framework-specific services. + + + + + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Joins a string with one or more other strings using a specified separator. + + + Any string that is empty (including the original string) is ignored. + + + + + Changes the first character of a string to uppercase. + + + + + Determines whether two objects refer to the same property. + + + + + Finds the property by a case-sensitive name. + + + Returns null if no such property exists. + + + + + Determines whether the specified method has been annotated with a specific attribute. + + + true if the specified method has attribute; otherwise, false. + + + + + Defines the modes in which custom implementations of are detected as configured + through . + + + + + Detection is disabled. + + + + + Only custom value formatters exposed through the assembly set in + are detected. + + + + + All custom value formatters in any assembly loaded in the current will be detected. + + + + + Represents a collection of assertion results obtained through a . + + + + + Adds the failures (if any) resulting from executing an assertion within a + identified by a key. + + + + + Returns the closest match compared to the set identified by the provided or + an empty array if one of the results represents a succesful assertion. + + + The closest match is the set that contains the least amount of failures, or no failures at all, and preferably + the set that is identified by the . + + + + + Gets a value indicating whether this collection contains a set without any failures at all. + + + + + Defines a step in the process of comparing two object graphs for structural equivalency. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Static methods that aid in generic event subscription + + + + + Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder + when invoked. + + + + + Finds the Return Type of a Delegate. + + + + + Returns an Array of Types that make up a delegate's parameter signature. + + + + + Returns an array of types appended with an EventRecorder reference at the beginning. + + + + + Returns T/F Dependent on a Type Being a Delegate. + + + + + Returns the MethodInfo for the Delegate's "Invoke" Method. + + + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + Simple dictionary that uses a to the event source as the key. + This should ensure the Garbage Collector can still clean-up the event source object. + + + + + This class is used to store data about an intercepted event + + + + + Default constructor stores the parameters the event was raised with + + + + + Parameters for the event + + + + + Defines a strategy for handling failures in a . + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + + + + + Gets an object that wraps and executes a conditional or unconditional assertion. + + + + + Throws a generic exception in case no other test harness is detected. + + + + + Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Represents an implicit or explicit scope within which multiple assertions can be collected. + + + + + Represents the phrase that can be used in as a placeholder for the reason of an assertion. + + + + + Initializes a new instance of the class. + + + + + Specify the condition that must be satisfied. + + If true the assertion will be succesful. + + + + Specify the reason why you expect the condition to be true. + + + A formatted phrase explaining why the condition should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Define the failure message for the assertion. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Discards and returns the failures that happened up to now. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets data associated with the current scope and identified by . + + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Determines whether data associated with an should be included in the assertion failure. + + + + + Represents a collection of data items that are associated with an . + + + + + Custom version of ICloneable that works on all frameworks. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30) +
+ +
+ + + Returns a new value for the specified and + in the month January. + + + + + Returns a new value for the specified and + in the month February. + + + + + Returns a new value for the specified and + in the month March. + + + + + Returns a new value for the specified and + in the month April. + + + + + Returns a new value for the specified and + in the month May. + + + + + Returns a new value for the specified and + in the month June. + + + + + Returns a new value for the specified and + in the month July. + + + + + Returns a new value for the specified and + in the month August. + + + + + Returns a new value for the specified and + in the month September. + + + + + Returns a new value for the specified and + in the month October. + + + + + Returns a new value for the specified and + in the month November. + + + + + Returns a new value for the specified and + in the month December. + + + + + Returns a new value for the specified and . + + + + + Returns a new value for the specified and time with the specified + , and optionally . + + + + + Returns a new value that is the current before the + specified . + + + + + Returns a new value that is the current after the + specified . + + + + + Specialized value formatter that looks for static methods in the caller's assembly marked with the + . + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + The value for which to create a . + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + Indicates whether the formatter should use line breaks when the specific supports it. + + + A that represents this instance. + + + + + Ensures a custom formatter is included in the chain, just before the default formatter is executed. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Marks a static method as a kind of for a particular type. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of extension methods for floating point . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the subject is considered equal to another object according to the implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is not equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must match except for the casing of the characters. + + + + + The message must start with the exact text, including the casing of the characters.. + + + The message must match exactly, including the casing of the characters. + + + + + The message must start with the text except for the casing of the characters. + + + + + The message must contain the exact text. + + + + + The message must contain the text except for the casing of the characters. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Contains a number of methods to assert that a is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that the current is exactly equal to the value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equal to the value. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + The that the current value is expected to be before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + The that the current value is expected to be on or before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + The that the current value is expected to be after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + The that the current value is expected to be on or after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + The expected year of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + The expected month of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + The expected day of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + The expected hour of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + The expected minutes of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + The expected seconds of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a is in the correct state. + + + + + Asserts that the is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not equal to the GUID. + + The unexpected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable boolean value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable boolean value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that the time difference of the current is greater than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is equal to the + specified time. + + The expected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is not equal to the + specified time. + + The unexpected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that an object equals another object using its implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object does not equal another object using it's method. + + The unexpected value + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to the exact same object as another object reference. + + The expected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to a different object than another object reference refers to. + + The unexpected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object can be serialized and deserialized using the XML serializer and that it stills retains + the values of all properties. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + + The expected string. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not exactly the same as the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to be equivalent to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts exactly with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains another (fragment of a) string. + + + The (fragement of a) string that the current string should contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain another (fragment of a) string. + + + The (fragement of a) string that the current string should not contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain the specified string, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string has the specified length. + + The expected length of the string + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is neither null nor . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Dedicated class for comparing two strings and generating consistent error messages. + + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Contains a number of methods to assert that two objects differ in the expected way. + + + You can use the and for a more fluent + way of specifying a or a . + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides the logic and the display text for a . + + + + + Contains a number of methods to assert that an yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the correct state. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Returns the type of the subject the assertion applies on. + + + + + Provides methods for asserting that the execution time of an satifies certain conditions. + + + + + Initializes a new instance of the class. + + The action of which the execution time must be asserted. + + + + Asserts that the execution time of the operation does not exceed a specified amount of time. + + + The maximum allowed duration. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides methods for asserting that the execution time of an object member satifies certain conditions. + + + + + + Initializes a new instance of the class. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + + + Selection rule that adds all public properties of the subject as far as they are defined on the declared + type. + + + + + Represents a rule that defines which properties of the subject-under-test to include while comparing + two objects for structural equality. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + Type info about the subject. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Selection rule that adds all public properties of the subject based on its run-time type rather than its + declared type. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + General purpose implementation of that uses a predicate to determine whether + this rule applies to a particular property and executes an action to assert equality. + + The type of the subject. + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides the required information for executing an equality assertion between a subject and an expectation. + + The type of the subject. + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the value of the + + + + + Gets the value of the expectation object that was matched with the subject using a . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Selection rule that removes a particular property from the structural comparison based on a predicate. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides details about the subject's root or nested property. + + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the full path from the root object until the current object separated by dots. + + + + + Gets a display-friendly representation of the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Represents a selection context of a nested property + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for the exact run-time behavior of a structural equality comparison. + + The type of the subject. + + + + Provides the run-time details of the class. + + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets or sets a value indicating whether or not the assertion must perform a deep comparison. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects + or collections. + + + + + Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, + and includes the entire object graph. The names of the properties between the subject and expectation must match. + + + + + Adds all public properties of the subject as far as they are defined on the declared type. + + + + + Adds all public properties of the subject based on its run-time type rather than its declared type. + + + + + Tries to match the properties of the subject with equally named properties on the expectation. Ignores those + properties that don't exist on the expectation. + + + + + Requires the expectation to have properties which are equally named to properties on the subject. + + + + + + Excludes the specified (nested) property from the structural equality check. + + + + + Excludes a (nested) property based on a predicate from the structural equality check. + + + + + Includes the specified property in the equality check. + + + This overrides the default behavior of including all declared properties. + + + + + The assertion to execute when the predicate is met. + + + + + Causes the structural equality check to include nested collections and complex types. + + + + + Causes the structural equality check to exclude nested collections and complex types. + + + Behaves similarly to the old property assertions API. + + + + + Causes the structural equality check to ignore any cyclic references. + + + By default, cyclic references within the object graph will cause an exception to be thrown. + + + + + Clears all selection rules, including those that were added by default. + + + + + Clears all matching rules, including those that were added by default. + + + + + Adds a selection rule to the ones already added by default, and which is evaluated after all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules + + + + + Causes all collections to be compared in the order in which the items appear in the expectation. + + + + + Causes the collection identified by to be compared in the order + in which the items appear in the expectation. + + + + + Causes the collection identified by the provided to be compared in the order + in which the items appear in the expectation. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets value indicating whether the equality check will include nested collections and complex types. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Defines additional overrides when used with + + + + + Allows overriding the way structural equality is applied to (nested) objects of tyoe + + + + + Allows overriding the way structural equality is applied to particular properties. + + + A predicate based on the of the subject that is used to identify the property for which the + override applies. + + + + + Defines a rule that is used to determine whether the order of items in collections is relevant or not. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + An ordering rule that basically states that the order of items in all collections is important. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Represents a rule for determining whether or not a certain collection within the object graph should be compared using + strict ordering. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Collection of s. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Determines whether the rules in this collection dictate strict ordering during the equivalency assertion on + the collection pointed to by . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Indication of how cyclic references should be handled when validating equality of nested properties. + + + + + Cyclic references will be ignored. + + + + + Cyclic references will result in an exception. + + + + + Gets a value indicating whether this step can handle the verificationScope subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Executes a single equivalency assertion on two collections, optionally recursive and with or without strict ordering. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Selection rule that removes a particular property from the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a rule that defines how to map the properties from the subject-under-test with the properties + on the expectation object. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Selection rule that includes a particular property in the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Provides information on a particular property during an assertion for structural equality of two object graphs. + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the value of the + + + + + Requires the expectation object to have a property with the exact same name. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides methods for selecting one or more properties of an object and comparing them with another object. + + + + + Includes all properties of when comparing the subject with another object using . + + + + + Includes all properties of including those of the run-time type when comparing the subject + with another object using . + + + + + Includes all properties of when comparing the subject with another object using , + except those that the other object does not have. + + + + + Perform recursive property comparison of the child properties for objects that are of incompatible type. + + + Indication of how cyclic references in the nested properties should be handled. By default this will result in an + exception, but if is specified, cyclic references will just be ignored. + + + + + Includes all properties of when comparing the subject with another object using , + except those specified using a property expression. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Excludes the properties specified by the from the comparison. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Includes only those properties of when comparing the subject with another object using + that were specified using a property expression. + + A single property expression to include. + Optional list of additional property expressions to include. + + + + Asserts that the previously selected properties of have the same value as the equally named + properties of . + + The object to compare the current object with + + Property values are considered equal if, after converting them to the requested type, calling + returns true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the value of the + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for validating the equality of one or more properties of a subject with another object. + + + + + Provides access the list of steps that are executed in the order of appearance during an equivalency test. + + + + + Keeps track of objects and their location within an object graph so that cyclic references can be detected + and handled upon. + + + + + Determines whether the specified object reference is a cyclic reference to the same object earlier in the + equivalency validation. + + + The behavior of a cyclic reference is determined byt he constructor + parameter. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an object tracked by the including it's location within an object graph. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Finds a property of the expectation with the exact same name, but doesn't require it. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()). +
+ +
+ + + Returns a based on a number of milliseconds. + + + + + Returns a based on a number of seconds. + + + + + Returns a based on a number of seconds, and add the specified + . + + + + + Returns a based on a number of minutes. + + + + + Returns a based on a number of minutes, and add the specified + . + + + + + Returns a based on a number of hours. + + + + + Returns a based on a number of hours, and add the specified + . + + + + + Returns a based on a number of days. + + + + + Returns a based on a number of days, and add the specified + . + + + + + Convenience method for chaining multiple calls to the methods provided by this class. + + + 23.Hours().And(59.Minutes()) + + + + + Extension methods for getting method and property selectors for a type. + + + + + Returns the types that are visible outside the specified . + + + + + Returns a method selector for the current . + + + + + Returns a method selector for the current . + + + + + Returns a property selector for the current . + + + + + Returns a property selector for the current . + + + + + Static class that allows for a 'fluent' selection of the types from an . + + + AllTypes.From(myAssembly)
+ .ThatImplement<ISomeInterface>
+ .Should()
+ .BeDecoratedWith<SomeAttribute>() +
+
+ + + Returns a for selecting the types that are visible outside the + specified . + + The assembly from which to select the types. + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class. + + The method to assert. + + + + Initializes a new instance of the class. + + The methods to assert. + + + + Asserts that the selected methods are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of methods of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select methods. + + + + Initializes a new instance of the class. + + The types from which to select methods. + + + + Only select the methods that return the specified type + + + + + Only select the methods that are decorated with an attribute of the specified type. + + + + + The resulting objects. + + + + + Determines whether the specified method has a special name (like properties and events). + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the methods that are public or internal. + + + + + Only select the methods without a return value + + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class, for a single . + + The property to assert. + + + + Initializes a new instance of the class, for a number of objects. + + The properties to assert. + + + + Asserts that the selected properties are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected properties have a setter. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of properties of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select properties. + + + + Initializes a new instance of the class. + + The types from which to select properties. + + + + Only select the properties that are decorated with an attribute of the specified type. + + + + + Only select the properties that return the specified type + + + + + The resulting objects. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the properties that have a public or internal getter. + + + + + Contains a number of methods to assert that a meets certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current type is equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is equal to the specified type. + + The expected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Creates an error message in case the specifed type differs from the + type. + + + An empty if the two specified types are the same, or an error message that describes that + the two specified types are not the same. + + + + + Asserts that the current type is not equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is not equal to the specified type. + + The unexpected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent filtering a list of types. + + + + + The resulting objects. + + + + + Determines whether a type is a subclass of another type, but NOT the same type. + + + + + Determines whether a type implements an interface (but is not the interface itself). + + + + + Determines whether a type is decorated with a particular attribute. + + + + + Determines whether the namespace of type is exactly . + + + + + Determines whether the namespace of type is starts with . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Contains a number of methods to assert that all s in a + meet certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the attribute. + + The expected attribute + + + + Asserts that the current equals the attribute. + + The expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The full name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the element. + + The expected element + + + + Asserts that the current equals the element. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of methods to assert that an asynchronous method yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the that is being asserted. + + + + diff --git a/dep/FluentAssertions.2.2.0.0/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.dll b/dep/FluentAssertions.2.2.0.0/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.dll new file mode 100644 index 0000000000000000000000000000000000000000..14ae808f099c06bb62e05eb27f0342b6687eaa60 GIT binary patch literal 181248 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
4l2553TfWvmXe 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 + + + FluentAssertions.WindowsPhone + + + + + Initializes a new instance of the class. + + + + + Contains extension methods for custom assertions in unit tests. + + + Provides extension methods for monitoring and querying events. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the current . + + + + + + Returns a object that can be used to assert the methods returned by the + current . + + + + + + Returns a object that can be used to assert the + current . + + + + + + Returns a object that can be used to assert the properties returned by the + current . + + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + Notice that actual behavior is determined by the instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + + + A reference to the configuration object that can be used + to influence the way the object graphs are compared. You can also provide an alternative instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Starts monitoring an object for its events. + + Thrown if eventSource is Null. + + + + Asserts that an object has raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised, or + null to refer to all properties. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Obtains the for a particular event of the . + + The object for which to get an event recorder. + The name of the event. + + + + + Asserts that all occurences of the event originated from the . + + + + + Asserts that at least one occurrence of the event had an object matching a predicate. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Contains a number of methods to assert that a reference type object is in the expected state. + + + + + Asserts that the current object has not been initialized yet. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current object has been initialized. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + The expected type of the object. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + + The type that the subject is supposed to be of. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is assignable to a variable of type . + + The type to which the object should be assignable. + The reason why the object should be assignable to the type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the collection does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any duplicate items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any null items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the elements that are not expected. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the unexpected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection only contains items that are assignable to the type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in the specified . + Elements are compared using their implementation. + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + + + Asserts that the collection is a subset of the . + + An with the expected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection is not a subset of the . + + An with the unexpected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Assert that the current collection has the same number of elements as . + + The other collection with the same expected number of elements + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection has the supplied at the + supplied . + + The index where the element is expected + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection does not contain the supplied item. + + The element that is not expected to be in the collection + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection shares one or more items with the specified . + + The with the expected shared items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not share any items with the specified . + + The to compare to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expectation state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that two collections contain the same items in the same order, where equality is determined using a + predicate. + + + The collection to compare the subject with. + + + A predicate the is used to determine whether two objects should be treated as equal. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + The expectation item. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains at least one item that matches the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Expects the current collection to contain only a single item matching the specified . + + The predictes that will be used to find the matching items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + The expected number of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + The predicate which must be statisfied by the amount of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The expected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The unexpected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection contains the specified object. Elements are compared + using their implementation. + + An object, or of objects that are expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Gets the active configuration, + + + + + Gets or sets the mode on how Fluent Assertions will find custom implementations of + . + + + + + Gets or sets the assembly name to scan for custom value formatters in case + is set to . + + + + + Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. + + + + + Maintains the framework-specific services. + + + + + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Joins a string with one or more other strings using a specified separator. + + + Any string that is empty (including the original string) is ignored. + + + + + Changes the first character of a string to uppercase. + + + + + Determines whether two objects refer to the same property. + + + + + Finds the property by a case-sensitive name. + + + Returns null if no such property exists. + + + + + Determines whether the specified method has been annotated with a specific attribute. + + + true if the specified method has attribute; otherwise, false. + + + + + Defines the modes in which custom implementations of are detected as configured + through . + + + + + Detection is disabled. + + + + + Only custom value formatters exposed through the assembly set in + are detected. + + + + + All custom value formatters in any assembly loaded in the current will be detected. + + + + + Represents a collection of assertion results obtained through a . + + + + + Adds the failures (if any) resulting from executing an assertion within a + identified by a key. + + + + + Returns the closest match compared to the set identified by the provided or + an empty array if one of the results represents a succesful assertion. + + + The closest match is the set that contains the least amount of failures, or no failures at all, and preferably + the set that is identified by the . + + + + + Gets a value indicating whether this collection contains a set without any failures at all. + + + + + Defines a step in the process of comparing two object graphs for structural equivalency. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Static methods that aid in generic event subscription + + + + + Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder + when invoked. + + + + + Finds the Return Type of a Delegate. + + + + + Returns an Array of Types that make up a delegate's parameter signature. + + + + + Returns an array of types appended with an EventRecorder reference at the beginning. + + + + + Returns T/F Dependent on a Type Being a Delegate. + + + + + Returns the MethodInfo for the Delegate's "Invoke" Method. + + + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + Simple dictionary that uses a to the event source as the key. + This should ensure the Garbage Collector can still clean-up the event source object. + + + + + This class is used to store data about an intercepted event + + + + + Default constructor stores the parameters the event was raised with + + + + + Parameters for the event + + + + + Defines a strategy for handling failures in a . + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + + + + + Gets an object that wraps and executes a conditional or unconditional assertion. + + + + + Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Represents an implicit or explicit scope within which multiple assertions can be collected. + + + + + Represents the phrase that can be used in as a placeholder for the reason of an assertion. + + + + + Initializes a new instance of the class. + + + + + Specify the condition that must be satisfied. + + If true the assertion will be succesful. + + + + Specify the reason why you expect the condition to be true. + + + A formatted phrase explaining why the condition should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Define the failure message for the assertion. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Discards and returns the failures that happened up to now. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets data associated with the current scope and identified by . + + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Determines whether data associated with an should be included in the assertion failure. + + + + + Represents a collection of data items that are associated with an . + + + + + Custom version of ICloneable that works on all frameworks. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30) +
+ +
+ + + Returns a new value for the specified and + in the month January. + + + + + Returns a new value for the specified and + in the month February. + + + + + Returns a new value for the specified and + in the month March. + + + + + Returns a new value for the specified and + in the month April. + + + + + Returns a new value for the specified and + in the month May. + + + + + Returns a new value for the specified and + in the month June. + + + + + Returns a new value for the specified and + in the month July. + + + + + Returns a new value for the specified and + in the month August. + + + + + Returns a new value for the specified and + in the month September. + + + + + Returns a new value for the specified and + in the month October. + + + + + Returns a new value for the specified and + in the month November. + + + + + Returns a new value for the specified and + in the month December. + + + + + Returns a new value for the specified and . + + + + + Returns a new value for the specified and time with the specified + , and optionally . + + + + + Returns a new value that is the current before the + specified . + + + + + Returns a new value that is the current after the + specified . + + + + + Specialized value formatter that looks for static methods in the caller's assembly marked with the + . + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + The value for which to create a . + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + Indicates whether the formatter should use line breaks when the specific supports it. + + + A that represents this instance. + + + + + Ensures a custom formatter is included in the chain, just before the default formatter is executed. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Marks a static method as a kind of for a particular type. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of extension methods for floating point . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the subject is considered equal to another object according to the implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is not equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must match except for the casing of the characters. + + + + + The message must start with the exact text, including the casing of the characters.. + + + The message must match exactly, including the casing of the characters. + + + + + The message must start with the text except for the casing of the characters. + + + + + The message must contain the exact text. + + + + + The message must contain the text except for the casing of the characters. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Contains a number of methods to assert that a is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that the current is exactly equal to the value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equal to the value. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + The that the current value is expected to be before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + The that the current value is expected to be on or before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + The that the current value is expected to be after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + The that the current value is expected to be on or after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + The expected year of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + The expected month of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + The expected day of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + The expected hour of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + The expected minutes of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + The expected seconds of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a is in the correct state. + + + + + Asserts that the is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not equal to the GUID. + + The unexpected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable boolean value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable boolean value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that the time difference of the current is greater than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is equal to the + specified time. + + The expected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is not equal to the + specified time. + + The unexpected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that an object equals another object using its implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object does not equal another object using it's method. + + The unexpected value + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to the exact same object as another object reference. + + The expected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to a different object than another object reference refers to. + + The unexpected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + + The expected string. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not exactly the same as the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to be equivalent to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts exactly with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains another (fragment of a) string. + + + The (fragement of a) string that the current string should contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain another (fragment of a) string. + + + The (fragement of a) string that the current string should not contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain the specified string, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string has the specified length. + + The expected length of the string + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is neither null nor . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Dedicated class for comparing two strings and generating consistent error messages. + + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Contains a number of methods to assert that two objects differ in the expected way. + + + You can use the and for a more fluent + way of specifying a or a . + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides the logic and the display text for a . + + + + + Contains a number of methods to assert that an yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the correct state. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Returns the type of the subject the assertion applies on. + + + + + Selection rule that adds all public properties of the subject as far as they are defined on the declared + type. + + + + + Represents a rule that defines which properties of the subject-under-test to include while comparing + two objects for structural equality. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + Type info about the subject. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Selection rule that adds all public properties of the subject based on its run-time type rather than its + declared type. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + General purpose implementation of that uses a predicate to determine whether + this rule applies to a particular property and executes an action to assert equality. + + The type of the subject. + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides the required information for executing an equality assertion between a subject and an expectation. + + The type of the subject. + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the value of the + + + + + Gets the value of the expectation object that was matched with the subject using a . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Selection rule that removes a particular property from the structural comparison based on a predicate. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides details about the subject's root or nested property. + + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the full path from the root object until the current object separated by dots. + + + + + Gets a display-friendly representation of the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Represents a selection context of a nested property + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for the exact run-time behavior of a structural equality comparison. + + The type of the subject. + + + + Provides the run-time details of the class. + + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets or sets a value indicating whether or not the assertion must perform a deep comparison. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects + or collections. + + + + + Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, + and includes the entire object graph. The names of the properties between the subject and expectation must match. + + + + + Adds all public properties of the subject as far as they are defined on the declared type. + + + + + Adds all public properties of the subject based on its run-time type rather than its declared type. + + + + + Tries to match the properties of the subject with equally named properties on the expectation. Ignores those + properties that don't exist on the expectation. + + + + + Requires the expectation to have properties which are equally named to properties on the subject. + + + + + + Excludes the specified (nested) property from the structural equality check. + + + + + Excludes a (nested) property based on a predicate from the structural equality check. + + + + + Includes the specified property in the equality check. + + + This overrides the default behavior of including all declared properties. + + + + + The assertion to execute when the predicate is met. + + + + + Causes the structural equality check to include nested collections and complex types. + + + + + Causes the structural equality check to exclude nested collections and complex types. + + + Behaves similarly to the old property assertions API. + + + + + Causes the structural equality check to ignore any cyclic references. + + + By default, cyclic references within the object graph will cause an exception to be thrown. + + + + + Clears all selection rules, including those that were added by default. + + + + + Clears all matching rules, including those that were added by default. + + + + + Adds a selection rule to the ones already added by default, and which is evaluated after all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules + + + + + Causes all collections to be compared in the order in which the items appear in the expectation. + + + + + Causes the collection identified by to be compared in the order + in which the items appear in the expectation. + + + + + Causes the collection identified by the provided to be compared in the order + in which the items appear in the expectation. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets value indicating whether the equality check will include nested collections and complex types. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Defines additional overrides when used with + + + + + Allows overriding the way structural equality is applied to (nested) objects of tyoe + + + + + Allows overriding the way structural equality is applied to particular properties. + + + A predicate based on the of the subject that is used to identify the property for which the + override applies. + + + + + Defines a rule that is used to determine whether the order of items in collections is relevant or not. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + An ordering rule that basically states that the order of items in all collections is important. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Represents a rule for determining whether or not a certain collection within the object graph should be compared using + strict ordering. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Collection of s. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Determines whether the rules in this collection dictate strict ordering during the equivalency assertion on + the collection pointed to by . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Indication of how cyclic references should be handled when validating equality of nested properties. + + + + + Cyclic references will be ignored. + + + + + Cyclic references will result in an exception. + + + + + Gets a value indicating whether this step can handle the verificationScope subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Executes a single equivalency assertion on two collections, optionally recursive and with or without strict ordering. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Selection rule that removes a particular property from the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a rule that defines how to map the properties from the subject-under-test with the properties + on the expectation object. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Selection rule that includes a particular property in the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Provides information on a particular property during an assertion for structural equality of two object graphs. + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the value of the + + + + + Requires the expectation object to have a property with the exact same name. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the value of the + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for validating the equality of one or more properties of a subject with another object. + + + + + Provides access the list of steps that are executed in the order of appearance during an equivalency test. + + + + + Keeps track of objects and their location within an object graph so that cyclic references can be detected + and handled upon. + + + + + Determines whether the specified object reference is a cyclic reference to the same object earlier in the + equivalency validation. + + + The behavior of a cyclic reference is determined byt he constructor + parameter. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an object tracked by the including it's location within an object graph. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Finds a property of the expectation with the exact same name, but doesn't require it. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()). +
+ +
+ + + Returns a based on a number of milliseconds. + + + + + Returns a based on a number of seconds. + + + + + Returns a based on a number of seconds, and add the specified + . + + + + + Returns a based on a number of minutes. + + + + + Returns a based on a number of minutes, and add the specified + . + + + + + Returns a based on a number of hours. + + + + + Returns a based on a number of hours, and add the specified + . + + + + + Returns a based on a number of days. + + + + + Returns a based on a number of days, and add the specified + . + + + + + Convenience method for chaining multiple calls to the methods provided by this class. + + + 23.Hours().And(59.Minutes()) + + + + + Extension methods for getting method and property selectors for a type. + + + + + Returns the types that are visible outside the specified . + + + + + Returns a method selector for the current . + + + + + Returns a method selector for the current . + + + + + Returns a property selector for the current . + + + + + Returns a property selector for the current . + + + + + Static class that allows for a 'fluent' selection of the types from an . + + + AllTypes.From(myAssembly)
+ .ThatImplement<ISomeInterface>
+ .Should()
+ .BeDecoratedWith<SomeAttribute>() +
+
+ + + Returns a for selecting the types that are visible outside the + specified . + + The assembly from which to select the types. + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class. + + The method to assert. + + + + Initializes a new instance of the class. + + The methods to assert. + + + + Asserts that the selected methods are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of methods of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select methods. + + + + Initializes a new instance of the class. + + The types from which to select methods. + + + + Only select the methods that return the specified type + + + + + Only select the methods that are decorated with an attribute of the specified type. + + + + + The resulting objects. + + + + + Determines whether the specified method has a special name (like properties and events). + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the methods that are public or internal. + + + + + Only select the methods without a return value + + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class, for a single . + + The property to assert. + + + + Initializes a new instance of the class, for a number of objects. + + The properties to assert. + + + + Asserts that the selected properties are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected properties have a setter. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of properties of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select properties. + + + + Initializes a new instance of the class. + + The types from which to select properties. + + + + Only select the properties that are decorated with an attribute of the specified type. + + + + + Only select the properties that return the specified type + + + + + The resulting objects. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the properties that have a public or internal getter. + + + + + Contains a number of methods to assert that a meets certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current type is equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is equal to the specified type. + + The expected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Creates an error message in case the specifed type differs from the + type. + + + An empty if the two specified types are the same, or an error message that describes that + the two specified types are not the same. + + + + + Asserts that the current type is not equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is not equal to the specified type. + + The unexpected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that all s in a + meet certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Allows for fluent filtering a list of types. + + + + + The resulting objects. + + + + + Determines whether a type is a subclass of another type, but NOT the same type. + + + + + Determines whether a type implements an interface (but is not the interface itself). + + + + + Determines whether a type is decorated with a particular attribute. + + + + + Determines whether the namespace of type is exactly . + + + + + Determines whether the namespace of type is starts with . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the attribute. + + The expected attribute + + + + Asserts that the current equals the attribute. + + The expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The full name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the element. + + The expected element + + + + Asserts that the current equals the element. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + +
+
diff --git a/dep/FluentAssertions.2.2.0.0/lib/sl4/FluentAssertions.Silverlight.dll b/dep/FluentAssertions.2.2.0.0/lib/sl4/FluentAssertions.Silverlight.dll new file mode 100644 index 0000000000000000000000000000000000000000..744e99e4c395db39695fa58e65caed6f13aca67f GIT binary patch literal 180736 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 VX3ci2@LNa!%U + + + FluentAssertions.Silverlight + + + + + Initializes a new instance of the class. + + + + + Contains extension methods for custom assertions in unit tests. + + + Provides extension methods for monitoring and querying events. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the current . + + + + + + Returns a object that can be used to assert the methods returned by the + current . + + + + + + Returns a object that can be used to assert the + current . + + + + + + Returns a object that can be used to assert the properties returned by the + current . + + + + + + Asserts that the properties of an object matches those of another object. + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + Notice that actual behavior is determined by the instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + + + A reference to the configuration object that can be used + to influence the way the object graphs are compared. You can also provide an alternative instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Starts monitoring an object for its events. + + Thrown if eventSource is Null. + + + + Asserts that an object has raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised, or + null to refer to all properties. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Obtains the for a particular event of the . + + The object for which to get an event recorder. + The name of the event. + + + + + Asserts that all occurences of the event originated from the . + + + + + Asserts that at least one occurrence of the event had an object matching a predicate. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Contains a number of methods to assert that a reference type object is in the expected state. + + + + + Asserts that the current object has not been initialized yet. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current object has been initialized. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + The expected type of the object. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + + The type that the subject is supposed to be of. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is assignable to a variable of type . + + The type to which the object should be assignable. + The reason why the object should be assignable to the type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the collection does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any duplicate items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any null items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the elements that are not expected. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the unexpected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection only contains items that are assignable to the type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in the specified . + Elements are compared using their implementation. + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + + + Asserts that the collection is a subset of the . + + An with the expected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection is not a subset of the . + + An with the unexpected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Assert that the current collection has the same number of elements as . + + The other collection with the same expected number of elements + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection has the supplied at the + supplied . + + The index where the element is expected + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection does not contain the supplied item. + + The element that is not expected to be in the collection + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection shares one or more items with the specified . + + The with the expected shared items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not share any items with the specified . + + The to compare to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expectation state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that two collections contain the same items in the same order, where equality is determined using a + predicate. + + + The collection to compare the subject with. + + + A predicate the is used to determine whether two objects should be treated as equal. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + The expectation item. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains at least one item that matches the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Expects the current collection to contain only a single item matching the specified . + + The predictes that will be used to find the matching items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + The expected number of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + The predicate which must be statisfied by the amount of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The expected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The unexpected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection contains the specified object. Elements are compared + using their implementation. + + An object, or of objects that are expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Gets the active configuration, + + + + + Gets or sets the mode on how Fluent Assertions will find custom implementations of + . + + + + + Gets or sets the assembly name to scan for custom value formatters in case + is set to . + + + + + Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. + + + + + Maintains the framework-specific services. + + + + + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Joins a string with one or more other strings using a specified separator. + + + Any string that is empty (including the original string) is ignored. + + + + + Changes the first character of a string to uppercase. + + + + + Determines whether two objects refer to the same property. + + + + + Finds the property by a case-sensitive name. + + + Returns null if no such property exists. + + + + + Determines whether the specified method has been annotated with a specific attribute. + + + true if the specified method has attribute; otherwise, false. + + + + + Defines the modes in which custom implementations of are detected as configured + through . + + + + + Detection is disabled. + + + + + Only custom value formatters exposed through the assembly set in + are detected. + + + + + All custom value formatters in any assembly loaded in the current will be detected. + + + + + Represents a collection of assertion results obtained through a . + + + + + Adds the failures (if any) resulting from executing an assertion within a + identified by a key. + + + + + Returns the closest match compared to the set identified by the provided or + an empty array if one of the results represents a succesful assertion. + + + The closest match is the set that contains the least amount of failures, or no failures at all, and preferably + the set that is identified by the . + + + + + Gets a value indicating whether this collection contains a set without any failures at all. + + + + + Defines a step in the process of comparing two object graphs for structural equivalency. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Static methods that aid in generic event subscription + + + + + Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder + when invoked. + + + + + Finds the Return Type of a Delegate. + + + + + Returns an Array of Types that make up a delegate's parameter signature. + + + + + Returns an array of types appended with an EventRecorder reference at the beginning. + + + + + Returns T/F Dependent on a Type Being a Delegate. + + + + + Returns the MethodInfo for the Delegate's "Invoke" Method. + + + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + Simple dictionary that uses a to the event source as the key. + This should ensure the Garbage Collector can still clean-up the event source object. + + + + + This class is used to store data about an intercepted event + + + + + Default constructor stores the parameters the event was raised with + + + + + Parameters for the event + + + + + Defines a strategy for handling failures in a . + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + + + + + Gets an object that wraps and executes a conditional or unconditional assertion. + + + + + Represents an implicit or explicit scope within which multiple assertions can be collected. + + + + + Represents the phrase that can be used in as a placeholder for the reason of an assertion. + + + + + Initializes a new instance of the class. + + + + + Specify the condition that must be satisfied. + + If true the assertion will be succesful. + + + + Specify the reason why you expect the condition to be true. + + + A formatted phrase explaining why the condition should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Define the failure message for the assertion. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Discards and returns the failures that happened up to now. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets data associated with the current scope and identified by . + + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Determines whether data associated with an should be included in the assertion failure. + + + + + Represents a collection of data items that are associated with an . + + + + + Custom version of ICloneable that works on all frameworks. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30) +
+ +
+ + + Returns a new value for the specified and + in the month January. + + + + + Returns a new value for the specified and + in the month February. + + + + + Returns a new value for the specified and + in the month March. + + + + + Returns a new value for the specified and + in the month April. + + + + + Returns a new value for the specified and + in the month May. + + + + + Returns a new value for the specified and + in the month June. + + + + + Returns a new value for the specified and + in the month July. + + + + + Returns a new value for the specified and + in the month August. + + + + + Returns a new value for the specified and + in the month September. + + + + + Returns a new value for the specified and + in the month October. + + + + + Returns a new value for the specified and + in the month November. + + + + + Returns a new value for the specified and + in the month December. + + + + + Returns a new value for the specified and . + + + + + Returns a new value for the specified and time with the specified + , and optionally . + + + + + Returns a new value that is the current before the + specified . + + + + + Returns a new value that is the current after the + specified . + + + + + Specialized value formatter that looks for static methods in the caller's assembly marked with the + . + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + The value for which to create a . + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + Indicates whether the formatter should use line breaks when the specific supports it. + + + A that represents this instance. + + + + + Ensures a custom formatter is included in the chain, just before the default formatter is executed. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Marks a static method as a kind of for a particular type. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of extension methods for floating point . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the subject is considered equal to another object according to the implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is not equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must match except for the casing of the characters. + + + + + The message must start with the exact text, including the casing of the characters.. + + + The message must match exactly, including the casing of the characters. + + + + + The message must start with the text except for the casing of the characters. + + + + + The message must contain the exact text. + + + + + The message must contain the text except for the casing of the characters. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Contains a number of methods to assert that a is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that the current is exactly equal to the value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equal to the value. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + The that the current value is expected to be before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + The that the current value is expected to be on or before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + The that the current value is expected to be after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + The that the current value is expected to be on or after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + The expected year of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + The expected month of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + The expected day of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + The expected hour of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + The expected minutes of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + The expected seconds of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a is in the correct state. + + + + + Asserts that the is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not equal to the GUID. + + The unexpected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable boolean value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable boolean value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that the time difference of the current is greater than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is equal to the + specified time. + + The expected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is not equal to the + specified time. + + The unexpected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that an object equals another object using its implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object does not equal another object using it's method. + + The unexpected value + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to the exact same object as another object reference. + + The expected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to a different object than another object reference refers to. + + The unexpected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + + The expected string. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not exactly the same as the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to be equivalent to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts exactly with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains another (fragment of a) string. + + + The (fragement of a) string that the current string should contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain another (fragment of a) string. + + + The (fragement of a) string that the current string should not contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain the specified string, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string has the specified length. + + The expected length of the string + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is neither null nor . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Dedicated class for comparing two strings and generating consistent error messages. + + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Contains a number of methods to assert that two objects differ in the expected way. + + + You can use the and for a more fluent + way of specifying a or a . + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides the logic and the display text for a . + + + + + Contains a number of methods to assert that an yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the correct state. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Returns the type of the subject the assertion applies on. + + + + + Selection rule that adds all public properties of the subject as far as they are defined on the declared + type. + + + + + Represents a rule that defines which properties of the subject-under-test to include while comparing + two objects for structural equality. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + Type info about the subject. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Selection rule that adds all public properties of the subject based on its run-time type rather than its + declared type. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + General purpose implementation of that uses a predicate to determine whether + this rule applies to a particular property and executes an action to assert equality. + + The type of the subject. + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides the required information for executing an equality assertion between a subject and an expectation. + + The type of the subject. + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the value of the + + + + + Gets the value of the expectation object that was matched with the subject using a . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Selection rule that removes a particular property from the structural comparison based on a predicate. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides details about the subject's root or nested property. + + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the full path from the root object until the current object separated by dots. + + + + + Gets a display-friendly representation of the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Represents a selection context of a nested property + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for the exact run-time behavior of a structural equality comparison. + + The type of the subject. + + + + Provides the run-time details of the class. + + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets or sets a value indicating whether or not the assertion must perform a deep comparison. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects + or collections. + + + + + Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, + and includes the entire object graph. The names of the properties between the subject and expectation must match. + + + + + Adds all public properties of the subject as far as they are defined on the declared type. + + + + + Adds all public properties of the subject based on its run-time type rather than its declared type. + + + + + Tries to match the properties of the subject with equally named properties on the expectation. Ignores those + properties that don't exist on the expectation. + + + + + Requires the expectation to have properties which are equally named to properties on the subject. + + + + + + Excludes the specified (nested) property from the structural equality check. + + + + + Excludes a (nested) property based on a predicate from the structural equality check. + + + + + Includes the specified property in the equality check. + + + This overrides the default behavior of including all declared properties. + + + + + The assertion to execute when the predicate is met. + + + + + Causes the structural equality check to include nested collections and complex types. + + + + + Causes the structural equality check to exclude nested collections and complex types. + + + Behaves similarly to the old property assertions API. + + + + + Causes the structural equality check to ignore any cyclic references. + + + By default, cyclic references within the object graph will cause an exception to be thrown. + + + + + Clears all selection rules, including those that were added by default. + + + + + Clears all matching rules, including those that were added by default. + + + + + Adds a selection rule to the ones already added by default, and which is evaluated after all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules + + + + + Causes all collections to be compared in the order in which the items appear in the expectation. + + + + + Causes the collection identified by to be compared in the order + in which the items appear in the expectation. + + + + + Causes the collection identified by the provided to be compared in the order + in which the items appear in the expectation. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets value indicating whether the equality check will include nested collections and complex types. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Defines additional overrides when used with + + + + + Allows overriding the way structural equality is applied to (nested) objects of tyoe + + + + + Allows overriding the way structural equality is applied to particular properties. + + + A predicate based on the of the subject that is used to identify the property for which the + override applies. + + + + + Defines a rule that is used to determine whether the order of items in collections is relevant or not. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + An ordering rule that basically states that the order of items in all collections is important. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Represents a rule for determining whether or not a certain collection within the object graph should be compared using + strict ordering. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Collection of s. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Determines whether the rules in this collection dictate strict ordering during the equivalency assertion on + the collection pointed to by . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Indication of how cyclic references should be handled when validating equality of nested properties. + + + + + Cyclic references will be ignored. + + + + + Cyclic references will result in an exception. + + + + + Gets a value indicating whether this step can handle the verificationScope subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Executes a single equivalency assertion on two collections, optionally recursive and with or without strict ordering. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Selection rule that removes a particular property from the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a rule that defines how to map the properties from the subject-under-test with the properties + on the expectation object. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Selection rule that includes a particular property in the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Provides information on a particular property during an assertion for structural equality of two object graphs. + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the value of the + + + + + Requires the expectation object to have a property with the exact same name. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides methods for selecting one or more properties of an object and comparing them with another object. + + + + + Includes all properties of when comparing the subject with another object using . + + + + + Includes all properties of including those of the run-time type when comparing the subject + with another object using . + + + + + Includes all properties of when comparing the subject with another object using , + except those that the other object does not have. + + + + + Perform recursive property comparison of the child properties for objects that are of incompatible type. + + + Indication of how cyclic references in the nested properties should be handled. By default this will result in an + exception, but if is specified, cyclic references will just be ignored. + + + + + Includes all properties of when comparing the subject with another object using , + except those specified using a property expression. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Excludes the properties specified by the from the comparison. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Includes only those properties of when comparing the subject with another object using + that were specified using a property expression. + + A single property expression to include. + Optional list of additional property expressions to include. + + + + Asserts that the previously selected properties of have the same value as the equally named + properties of . + + The object to compare the current object with + + Property values are considered equal if, after converting them to the requested type, calling + returns true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the value of the + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for validating the equality of one or more properties of a subject with another object. + + + + + Provides access the list of steps that are executed in the order of appearance during an equivalency test. + + + + + Keeps track of objects and their location within an object graph so that cyclic references can be detected + and handled upon. + + + + + Determines whether the specified object reference is a cyclic reference to the same object earlier in the + equivalency validation. + + + The behavior of a cyclic reference is determined byt he constructor + parameter. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an object tracked by the including it's location within an object graph. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Finds a property of the expectation with the exact same name, but doesn't require it. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()). +
+ +
+ + + Returns a based on a number of milliseconds. + + + + + Returns a based on a number of seconds. + + + + + Returns a based on a number of seconds, and add the specified + . + + + + + Returns a based on a number of minutes. + + + + + Returns a based on a number of minutes, and add the specified + . + + + + + Returns a based on a number of hours. + + + + + Returns a based on a number of hours, and add the specified + . + + + + + Returns a based on a number of days. + + + + + Returns a based on a number of days, and add the specified + . + + + + + Convenience method for chaining multiple calls to the methods provided by this class. + + + 23.Hours().And(59.Minutes()) + + + + + Extension methods for getting method and property selectors for a type. + + + + + Returns the types that are visible outside the specified . + + + + + Returns a method selector for the current . + + + + + Returns a method selector for the current . + + + + + Returns a property selector for the current . + + + + + Returns a property selector for the current . + + + + + Static class that allows for a 'fluent' selection of the types from an . + + + AllTypes.From(myAssembly)
+ .ThatImplement<ISomeInterface>
+ .Should()
+ .BeDecoratedWith<SomeAttribute>() +
+
+ + + Returns a for selecting the types that are visible outside the + specified . + + The assembly from which to select the types. + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class. + + The method to assert. + + + + Initializes a new instance of the class. + + The methods to assert. + + + + Asserts that the selected methods are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of methods of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select methods. + + + + Initializes a new instance of the class. + + The types from which to select methods. + + + + Only select the methods that return the specified type + + + + + Only select the methods that are decorated with an attribute of the specified type. + + + + + The resulting objects. + + + + + Determines whether the specified method has a special name (like properties and events). + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the methods that are public or internal. + + + + + Only select the methods without a return value + + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class, for a single . + + The property to assert. + + + + Initializes a new instance of the class, for a number of objects. + + The properties to assert. + + + + Asserts that the selected properties are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected properties have a setter. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of properties of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select properties. + + + + Initializes a new instance of the class. + + The types from which to select properties. + + + + Only select the properties that are decorated with an attribute of the specified type. + + + + + Only select the properties that return the specified type + + + + + The resulting objects. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the properties that have a public or internal getter. + + + + + Contains a number of methods to assert that a meets certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current type is equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is equal to the specified type. + + The expected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Creates an error message in case the specifed type differs from the + type. + + + An empty if the two specified types are the same, or an error message that describes that + the two specified types are not the same. + + + + + Asserts that the current type is not equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is not equal to the specified type. + + The unexpected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent filtering a list of types. + + + + + The resulting objects. + + + + + Determines whether a type is a subclass of another type, but NOT the same type. + + + + + Determines whether a type implements an interface (but is not the interface itself). + + + + + Determines whether a type is decorated with a particular attribute. + + + + + Determines whether the namespace of type is exactly . + + + + + Determines whether the namespace of type is starts with . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Contains a number of methods to assert that all s in a + meet certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the attribute. + + The expected attribute + + + + Asserts that the current equals the attribute. + + The expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The full name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the element. + + The expected element + + + + Asserts that the current equals the element. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + +
+
diff --git a/dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll new file mode 100644 index 0000000000000000000000000000000000000000..9313918b18d2dcdb4e80594637103d1cd11623c3 GIT binary patch literal 63336 zcmeHw2Ygh;_W#_wHJfC~ZbA~$=}Q`$P(zcD1PRg;5EKm|Szsl}#@&RDh9Y1A6%mn# zg4h)+D2fdQv4P@K>>?=kjs+|Hzh~yQG{N`#{oe2QK7ST+?wm6-XU?2CbLPz4yLU&P za}_f&#?1ITae}c&aHY>+4*wc7AlsR`!^yUV?Q8#tG-6--(i#3xT5T{eJy>3yR#9G4 z6R1m@>PrjO*QEJt(h5hHq*Vthec6$bj!p{eF-44xkW6e=?z3m9tsP==`*6w5*!`fS z3F^UpO8OAtg9SZG$W0WIpMTOM#z6lLR}&k22}gkISDq4O0j~hx(S#jhY@&q{%I6Sc zGvX*Mu?WDOdl^e2^i)4-jG+hG#}0g$hB201=bKXp{K!23$m4zGaw4sK(ioeP9Sj94 zfOFXnAwgw!;?M9I425I|eN_PzBw0yjUT!}}G%%R4AsTWzaaseXHE>!3r!{a|1E)1` zS_7vwa9RVWHE>!3r#0~Zl?Hawz8W9eo65|>W(>t%a~We{oT`H{X^b`KXsfA=Nu`6g zZ+Z8{hNpIJ{OGxx4tHMbF6ujR^@NxQM$NA~cKDNqF`o`h9+}^N%Br#VMJ->KaPxbY z^eNBpwncjLcR8!m?mwc>82D|&yruqqwy;MQ&C37m9~azo{ejzK5B@&-i$nII*ZtYf zeC^%$J=JT5_rChkPw(3F&;WPpbB79Y978xng?Q05 z2Nmofn>_6(r$(Mngv?fPJ)?+*w zR8ovNPcjzmHM5bhT8Qd`PH>dt$SN>9ucC)7( ztTHT|@8&QMPHU`=;9N9nwTS-ejb`hO^5i*6JLvays9+ zR%k=j5>JY;JP-ZGFg4dxX0Z_BRC;R^!sfY~3-NA?Li9nNGE`d9;(-7e>AC^*(+g=y z3pt&P^g)<@ifs<0QrW;QF&>`gwmD1fk7<&pJ=AXQeL;dcYL-m9rI8)l;@U6|W|bq* z5x~=l4^w;_sTr+Z8@Uq$_4*%^Zwr@?k3$Rc6&U2> z>E`mmjr=YBb!kC=g4S4nf_4)94K>Ke)2+z&H}ogkZ9Kk$)}nlWt-oS}d^|mrR)(%n zfd$$gLAkUx36B>e2)&8m!~)8*VXqeUDC`xM?Xm>Pkb;uLYPo&Ka-;Q30UvXgDKydf>4gdCRF%7T8q$1B0gFK^k zdF0HIib$D-rzVmv4+MFF3qt% zvlKZw8;9&kCvByevckl$I5OPaxeClgL5IT;uR87E4QOSvEe=bj2b0AbiUXL(`JUN` zuSwx+&I%J|uJRR_xd~s{$P=M1=V@kGGZ4LFJpwn$R9*en`7{K!Ecn@_0ef4@u z=cvyT?w`r*Y?gNwa{^`Ad~h4WDWcAmv+O2wC=V6qr4LnlNEEE*pg?a{h9!sY>$!sO zLzGxgf8;o~02)=&Bs z^Oh&k2I(56Nc%9C9Q+1Mf*nlFeXJZ91h(NBZd>3CE{cfzeAHxuLGDbmvfO`bU?lP6Y{2d$32HjId`7wr1Jl9DN%=6caky z>axa~GEF9Rfpl5pgco*MJ-0!W$RM>DCStmb;Wm3<2>55_Db;N*TjT1sIJ;P1TsB@m z+RPca%nAp)%^nwk!8;(-U|jl@oj7sgU|W}k+f%gNWzV#^6qC~DRu6W^yR0pwHrP?U zZbv+cbrQNlG{HY|&}xPq4FYHyLzqO?h!(Qo!LI~c3?$W7ty#C-IeMEs*|g2`TW^zR z{Y9JD(NU4+ZO+%*rTD+_b9 z#bs%}p>kQ`MByvoouth!OT4J1qMogg#lag=)u-k#$tx;B=C_nx3d|7Dwo;w5Co6N=quu}RxMFw zL`EnWSv(I@O)frmuM}%p<0d-7gd-V6jwB{b_z}1@_z|mEnsh&M27B}u7K45m{K!&W zjXWvhTP*oJ?pES7Q|KBLb2HD?xMZaTuY&Tlu*|H4PY)ok*(fd7+4Cg$QvCc^{4>*n zyHCR3u+zAV8c_EBJk9wd!f7PGS(UwgW7#bR+0}5)z(4MCV#u@h zYvT=T#CV&64bT6uaZGagC(1W@Ndox>ROOC`CN;aLe#)hZEWu z8y9Uk*cpYnU@t;2t5Gm>Y^f!dHxQfdvS|A1&ieUlV$D|WVMP2Cfah`?#~Eo>vPJQW zPb>uQ1H&>kj2NB9^Wv+Oi4gr(AvJQP6(=_2eGYcQ;XxoHgNQ`xKm7XdNL^Qok~ zfJlK+)LbVcU1WzwBcro}w_y#80U~(NNj)`BS8A8`2PWo4J9Gvhd#-~DWY0Q4&sbCn zj03@RSm4-^ z>jZaIgjl9+yaNiRKywZIGL&4$L}4 z)eg#&`Cc*Bz$3G*C>8FO1QXBMR5rLD;~JWXDv_W+-Gq4c?#71`^XMdd+)mP0tPf!-kzbZSx&K zR@n{6J4U2;m?5XL!+`8CBH7`FoGnJ=+6Y6=vPc86$B2w}8glM4B2OEUj%^IZzA+*_ zqYODGj0h}O@976dq=(y(Q({DJFe2g6hGH{~$N?kLHO5eEO{@WN#~F}$IwHm%j)TS1 z*axs%Bu_$@aO*0+ZIwS8Hi#6q{TcDru=RoSkY!V@loy7reV9G>NF00}*&mHL=7S3n zPdEh;w!rzs%$9Z3%I8W?3Ga_3dl`ycy<+%e>0J68mi_BG!@7#%?uR*9Xc`4~Hld9ad!Kerb=AO_>(c zDnAZL4x-B;oQyc;#YUpSLKBKpC!^sBSNZY3$26Gs2$$I=dPu<&J)!H!j7Fjo3Cf{s zcE^kimjzgMg3GcW-b3>Eh#bL*foW7n9Hx*E_u7cJ!xYvTYC@wzJjis$JVaGtS#k^% z*u!j!U7sEsZN-|0;w$@sX|x?;hPmuk>y28EzK?TcTnWjI}7@jb$|k9bvQgfF0QE-R1c7I4l5U2WIvq_+wE(_+WKfvXJGpWa2ng zMhToh#YXg9jRHC(=$jSyNO>j#|b<$LBSD@`H>&ROyVkKc$E@uMGhDe6HzE5S`?Ex zf2D>TxBwiWL~*soIpV@IFblX5cYUk%wosBoB#G1#z-k7UyX$4%Kch&TG0jJgMkMmuFh*^6;$I|ZU>+@iBrZ#K%-lUO*%@J~q%rwi+K(AvHdxG{wc#I9;h# z@@2;O_-k}a_Iv}_C_ercgx2F@YMnZdP?c{7{_=`@bleC%zksLV!5ys9qyvN<`F0Jt4@aNF&i{SC^QC#%?tBfXpG~yQ9`2-JRg=X zqW|U;eDSDc_z;O6ZovoVeE7aswl}+%w@+>#qF5L_Crip?tm8$Dt-!Sk3w_6ux}d*i zdWcH=Sj^bt2=Y3PFJbqiYf+$eJac?;A+9@tuWJu{NL2tj;vX3S&)KP)!^5yOW4}o~ z7&b7}dIA2xp07Rh(2N}gY5B(d;(3^#4D*%tUaSlLy5f)Og(+7Q=eP}5cmsSKO0TT! z67xl7E4z}z>p9$N-UP}MJpBSsAK>Yc*1lFNn`EW(-EGM>D?86dC1dQrBE8kV*=}WV zVMHn8a8neO`HsUsIqcy|wmH~(*L;_i9d=R4#J0rE9Q$!wE4w3(%0I>7dmR4GVN5*H zvp5{aVFiZ^;;F?Ob=J_jCMpEV&(K5gXAivz?Vyak!@)wRn)jZ#j%e zAW8;@XC_b|{XAXEVFQO7IDKaV_4Mb2FA`p1W(40>)+>?fj^S_`hnFXkw09%jgY7|? zZ~gkuq` zlILBZMo51rQ5Hu3UITXT1vAd*)P|wNMaGr;F$!NBLb2%o3$&qOLR$g+jOf8IJ zyExBr3icA0x=g{|L5~=l2`m{UKjS>-%S*uJYz4bg-oUZXInVoey|dXDToXHhS=eND zl-Jv*U_bD@!wU8z$9`3?pE%}(TB+X897|EKV;sxl*!k>tj*aHn6n30rGZgFu$1YMZ zAkg4?1p@+XtAfcKd!A$E%*?SjIX0D9IrbyRDwv&P4l_ws$s8O@;+T&`a4d^s)0mTE zXK-vfi{jW=j`>-PbQARC2L{Muq10Q*Pk!4h~-gjAfqzj%|3| zO7IIniLJLMn^bPQ?Cp_$-rm{dVteh~kd6wQ2$&ppu4zKU(lDxZBZrT1c!0xCIQ)Y{ zmxIc9IV|MxJPt1eoY1hGr*G!)X%1iG@Cy!q;n0P%g0T%592Rpp18_paEDjquyo|#& z9Nx&`og8ij9NX{`hwpRBHyk=5h(l)%2XlBXhqD03Hmv0Eb`Brs@C6PJbND@nQIW)< zCx=5g9L?cm4lm$v4u_X;xEgS5!zP~I&eMB2e2-JU=g{Vi#=+Rz?upRtVRu&2goYJX zf}ip9w;cY)A&Vxuox>==)<-Qqnno=nx-%e+xH_`uMpJqThqrUMk3)M5(Q{&Gl*e*7 zmBXc+ekI`kG?*V-7XOZ!)}9XpWXz9T9!rO~yks9W}30ACzWnc%8reR%iVnj!{jICwgSaN~&*04S}1sSYi1F?4> zt6)E&WP4VoVSQK!=GU-+tP`83V1HVQ5PPi9u;I+ZR%_T8oXOs-U}kF(%VG~`*l?E3 z9@DTf%**yFnA19u^te(Yc z*cvv6b<(g6YyrDX!P;AI!#ex0hTX%KvfUc?5L>~9QuxSu-o{q42^w|}yNXq6*h5(7 zKT)vu)~DF@>}L(zgH>Pl2rlidFSAW7M#J7h4A5D_4zoL1PYwH$-OGMeuuSmW#=^R( zvg~2oSz8TznLWn3YS>$BC+n+WhuLm6OvAopFR)z-cE0r(dxiZ|!;Z68*&z+HO0TmL zoZ3;}11R|xo2p^Q**mOO!>rQ#>^%irVvUjxv(Ggw2G~&zYbSk(-M8Sm0ws^INDYet z7O!FLq>ouG$F5=5TGOOY*=_~fWc5g2upbrdVQa4REz6|s0OZ_d?IV51FqQDRI=(nD zO8TBfaO@hk$$FOjJ!_|6%r;K`k!31av2BukjLqlRTIRQv$-l76G;Esu8(XJgHS(V< zCR?-@L`g~NsA1D&ljPN~8rdq{p=HRr>e*fJT!WHP(hv>1 zNOnmhH0%;NTAJ(?C2zB>l4GTr8n#xBm*!~LMmbU1uV4?LWUBOmhOL#`OJ8Z&M!Azz zm?L;Tg_0hrM8np~>CzMp+lc2|F31%n_n~BtG*`pc$~~l|8n#jHEuGgxlsss=OYSFC zY1o7E0BMefJtm(a-9pFz7{B(`RdRu}Rm0ZGMbb_U+b9o{Oua=|`qiwx z{WG~*TEnqxSg!piIUuF+UGUYc!2YLvp|o4UCfUPHv!v_#QoX}cwLQ)>Pr8+3w8nMC z?&2PfEmE+Dw7eds1=2elTWkNoKFHJ{9T9oWNzRIr(0LDMDD7LF}rbHio>+sm=FEYVq&c!~73g7pEm zO!`E@#sFI`{h(k|fUS^Ne`;?ns|R+e6scgB0=rB~P_Wy9T`qN1upPjzka{ZEKY^{3 z@)hi3V5_823icbYE2VQ4EUrye;#JZN1@i#ATB=vDLBLi^ixuoFVAn`jDp&=uHPQwJ zTLA1@=}rZ^9@tvxVFlX`>^f{X;sYVD6}@ z#0`>pfY3_{up10 zL*$KfJ)8KrR5F+_VS`Ue=W>kv?kkB;Nf&6?IQeO5j)omb+%0{jVAEZ%Bt9?wu3_Wk z7bSZ>!)GmrgfT*nf>(y*so4)%?P?F06$hP?&s zI~9xk+I2kfdky=;WlGX9yW0+|O95{oEYaPDeJ}M;undk3RwI;IX0PNi`Y5t zNO0Mv!FTewNII zBdhCJJ%kqil$IFs{*+cLc{d>MxU}AocU-zt$$JQSC!_}q zc_*ZuO5QQ#G5L8dugt{cHMaYxopAC7kY#Azab}sTva-_hZ z2?sODNg9@bW9M9@!)dFo|u8A^0Sq z%yuD(lyr`1|b zDQYd98z!LEu3D=pMXjZC`**fwVq=?Wk|^dD^r_P=&9tiWG4@U`-&hYiUFDA8ZU%CFNUrl(J(mRer)SJb7n+DD?C ztjsf9<`;NLJ*~Fhl%mS4(

-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 H5HbBfEx=6F literal 0 HcmV?d00001 diff --git a/dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml b/dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml new file mode 100644 index 00000000000..f8009f5096d --- /dev/null +++ b/dep/FluentAssertions.2.2.0.0/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml @@ -0,0 +1,3429 @@ + + + + Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight + + + +

+ UrlToTest specifies the url that should be requested to give context to the test. + + + + + An unused attribute. + + + + + + Gets the URL to test. + + + + + AspNetDevelopmentServer specifies the settings to be used for the + ASP.NET Development Server for the test. + + + + + Initializes the AspNetDevelopmentServerAttribute. + + The name. + The path to web app. + + + + Initializes the AspNetDevelopmentServerAttribute. + + The name. + The path to web app. + The web app root. + + + + Gets the name. + + + + + Gets the PathToWebApp. + + + + + Gets the web app root. + + + + + AspNetDevelopmentServerHost specifies the settings to be used when + ASP.NET Development Server is the host server for the test. + + + + + Initializes the AspNetDevelopmentServerHostAttribute. + + The path to the web app. + + + + Initializes the AspNetDevelopmentServerHostAttribute. + + The path to the web app. + The web app root. + + + + Gets the path to the web application. + + + + + Gets the WebAppRoot. + + + + + For ASP.NET sites that require basic authentication, specify the + user name and password using the Credential attribute. + WARNING: The password is stored in plain text in source code + and in the compiled assembly. Restrict access to the source code + and assembly to protect this sensitive information. + + + + + Specify the user name and password needed to access the web site under test. + + The user name. + + The password. WARNING: The password is stored in plain text in source code + and in the compiled assembly. Restrict access to the source code and assembly + to protect this sensitive information. + + + + + Specify the user name, password, and domain needed to access the web site under test. + + The user name. + + The password. WARNING: The password is stored in plain text in source code + and in the compiled assembly. Restrict access to the source code and assembly + to protect this sensitive information. + + The domain. + + + + Gets the user name. + + + + + Gets the password. + + + + + Gets the domain. + + + + + Base class for Framework Exceptions, provides localization trick so that messages are in HA locale. + + + + + Initializes a new UnitTestAssertException. + + + + + Initializes UnitTestAssertException. + + The message. + + + + Gets the Message string. + + + + + AssertFailedException class. Used to indicate failure for a test case + + + + + Initializes a new AssertFailedException. + + The message. + + + + AssertFailedException + + The message. + The inner exception. + + + + The AssertInconclusiveException class. + + + + + Initializes a new AssertInconclusiveException. + + The message. + + + + Initializes a new AssertInconclusiveException. + + The message. + The inner exception. + + + + Initializes a new AssertInconclusiveException. + + + + + InternalTestFailureException class. Used to indicate internal failure + for a test case. + + + + + Initializes a new InternalTestFailureException. + + The message. + + + + Initializes a new InternalTestFailureException. + + The message. + The inner exception. + + + + Initializes a new InternalTestFailureException. + + + + + A collection of helper classes to test various conditions within + unit tests. If the condition being tested is not met, an exception + is thrown. + + + + + + + + + + Tests whether the specified condition is true and throws an exception + if the condition is false. + + The condition the test expects to be true. + + Thrown if is false. + + + + + Tests whether the specified condition is true and throws an exception + if the condition is false. + + The condition the test expects to be true. + + The message to include in the exception when + is false. The message is shown in test results. + + + Thrown if is false. + + + + + Tests whether the specified condition is true and throws an exception + if the condition is false. + + The condition the test expects to be true. + + The message to include in the exception when + is false. The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is false. + + + + + Tests whether the specified condition is false and throws an exception + if the condition is true. + + The condition the test expects to be false. + + Thrown if is true. + + + + + Tests whether the specified condition is false and throws an exception + if the condition is true. + + The condition the test expects to be false. + + The message to include in the exception when + is true. The message is shown in test results. + + + Thrown if is true. + + + + + Tests whether the specified condition is false and throws an exception + if the condition is true. + + The condition the test expects to be false. + + The message to include in the exception when + is true. The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is true. + + + + + Tests whether the specified object is null and throws an exception + if it is not. + + The object the test expects to be null. + + Thrown if is not null. + + + + + Tests whether the specified object is null and throws an exception + if it is not. + + The object the test expects to be null. + + The message to include in the exception when + is not null. The message is shown in test results. + + + Thrown if is not null. + + + + + Tests whether the specified object is null and throws an exception + if it is not. + + The object the test expects to be null. + + The message to include in the exception when + is not null. The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is not null. + + + + + Tests whether the specified object is non-null and throws an exception + if it is null. + + The object the test expects not to be null. + + Thrown if is null. + + + + + Tests whether the specified object is non-null and throws an exception + if it is null. + + The object the test expects not to be null. + + The message to include in the exception when + is null. The message is shown in test results. + + + Thrown if is null. + + + + + Tests whether the specified object is non-null and throws an exception + if it is null. + + The object the test expects not to be null. + + The message to include in the exception when + is null. The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is null. + + + + + Tests whether the specified objects both refer to the same object and + throws an exception if the two inputs do not refer to the same object. + + + The first object to compare. This is the value the test expects. + + + The second object to compare. This is the value produced by the code under test. + + + Thrown if does not refer to the same object + as . + + + + + Tests whether the specified objects both refer to the same object and + throws an exception if the two inputs do not refer to the same object. + + + The first object to compare. This is the value the test expects. + + + The second object to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is not the same as . The message is shown + in test results. + + + Thrown if does not refer to the same object + as . + + + + + Tests whether the specified objects both refer to the same object and + throws an exception if the two inputs do not refer to the same object. + + + The first object to compare. This is the value the test expects. + + + The second object to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is not the same as . The message is shown + in test results. + + + An array of parameters to use when formatting . + + + Thrown if does not refer to the same object + as . + + + + + Tests whether the specified objects refer to different objects and + throws an exception if the two inputs refer to the same object. + + + The first object to compare. This is the value the test expects not + to match . + + + The second object to compare. This is the value produced by the code under test. + + + Thrown if refers to the same object + as . + + + + + Tests whether the specified objects refer to different objects and + throws an exception if the two inputs refer to the same object. + + + The first object to compare. This is the value the test expects not + to match . + + + The second object to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is the same as . The message is shown in + test results. + + + Thrown if refers to the same object + as . + + + + + Tests whether the specified objects refer to different objects and + throws an exception if the two inputs refer to the same object. + + + The first object to compare. This is the value the test expects not + to match . + + + The second object to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is the same as . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if refers to the same object + as . + + + + + Tests whether the specified values are equal and throws an exception + if the two values are not equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + The type of values to compare. + + The first value to compare. This is the value the tests expects. + + + The second value to compare. This is the value produced by the code under test. + + + Thrown if is not equal to + . + + + + + Tests whether the specified values are equal and throws an exception + if the two values are not equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + The type of values to compare. + + The first value to compare. This is the value the tests expects. + + + The second value to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified values are equal and throws an exception + if the two values are not equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + The type of values to compare. + + The first value to compare. This is the value the tests expects. + + + The second value to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified values are unequal and throws an exception + if the two values are equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + The type of values to compare. + + The first value to compare. This is the value the test expects not + to match . + + + The second value to compare. This is the value produced by the code under test. + + + Thrown if is equal to . + + + + + Tests whether the specified values are unequal and throws an exception + if the two values are equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + The type of values to compare. + + The first value to compare. This is the value the test expects not + to match . + + + The second value to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + Thrown if is equal to . + + + + + Tests whether the specified values are unequal and throws an exception + if the two values are equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + The type of values to compare. + + The first value to compare. This is the value the test expects not + to match . + + + The second value to compare. This is the value produced by the code under test. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified objects are equal and throws an exception + if the two objects are not equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + + The first object to compare. This is the object the tests expects. + + + The second object to compare. This is the object produced by the code under test. + + + Thrown if is not equal to + . + + + + + Tests whether the specified objects are equal and throws an exception + if the two objects are not equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + + The first object to compare. This is the object the tests expects. + + + The second object to compare. This is the object produced by the code under test. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified objects are equal and throws an exception + if the two objects are not equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + + The first object to compare. This is the object the tests expects. + + + The second object to compare. This is the object produced by the code under test. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified objects are unequal and throws an exception + if the two objects are equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + + The first object to compare. This is the value the test expects not + to match . + + + The second object to compare. This is the object produced by the code under test. + + + Thrown if is equal to . + + + + + Tests whether the specified objects are unequal and throws an exception + if the two objects are equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + + The first object to compare. This is the value the test expects not + to match . + + + The second object to compare. This is the object produced by the code under test. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + Thrown if is equal to . + + + + + Tests whether the specified objects are unequal and throws an exception + if the two objects are equal. Different numeric types are treated + as unequal even if the logical values are equal. 42L is not equal to 42. + + + The first object to compare. This is the value the test expects not + to match . + + + The second object to compare. This is the object produced by the code under test. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified floats are equal and throws an exception + if they are not equal. + + + The first float to compare. This is the float the tests expects. + + + The second float to compare. This is the float produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by more than . + + + Thrown if is not equal to + . + + + + + Tests whether the specified floats are equal and throws an exception + if they are not equal. + + + The first float to compare. This is the float the tests expects. + + + The second float to compare. This is the float produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by more than . + + + The message to include in the exception when + is different than by more than + . The message is shown in test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified floats are equal and throws an exception + if they are not equal. + + + The first float to compare. This is the float the tests expects. + + + The second float to compare. This is the float produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by more than . + + + The message to include in the exception when + is different than by more than + . The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified floats are unequal and throws an exception + if they are equal. + + + The first float to compare. This is the float the test expects not to + match . + + + The second float to compare. This is the float produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by at most . + + + Thrown if is equal to . + + + + + Tests whether the specified floats are unequal and throws an exception + if they are equal. + + + The first float to compare. This is the float the test expects not to + match . + + + The second float to compare. This is the float produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by at most . + + + The message to include in the exception when + is equal to or different by less than + . The message is shown in test results. + + + Thrown if is equal to . + + + + + Tests whether the specified floats are unequal and throws an exception + if they are equal. + + + The first float to compare. This is the float the test expects not to + match . + + + The second float to compare. This is the float produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by at most . + + + The message to include in the exception when + is equal to or different by less than + . The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified doubles are equal and throws an exception + if they are not equal. + + + The first double to compare. This is the double the tests expects. + + + The second double to compare. This is the double produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by more than . + + + Thrown if is not equal to + . + + + + + Tests whether the specified doubles are equal and throws an exception + if they are not equal. + + + The first double to compare. This is the double the tests expects. + + + The second double to compare. This is the double produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by more than . + + + The message to include in the exception when + is different than by more than + . The message is shown in test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified doubles are equal and throws an exception + if they are not equal. + + + The first double to compare. This is the double the tests expects. + + + The second double to compare. This is the double produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by more than . + + + The message to include in the exception when + is different than by more than + . The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified doubles are unequal and throws an exception + if they are equal. + + + The first double to compare. This is the double the test expects not to + match . + + + The second double to compare. This is the double produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by at most . + + + Thrown if is equal to . + + + + + Tests whether the specified doubles are unequal and throws an exception + if they are equal. + + + The first double to compare. This is the double the test expects not to + match . + + + The second double to compare. This is the double produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by at most . + + + The message to include in the exception when + is equal to or different by less than + . The message is shown in test results. + + + Thrown if is equal to . + + + + + Tests whether the specified doubles are unequal and throws an exception + if they are equal. + + + The first double to compare. This is the double the test expects not to + match . + + + The second double to compare. This is the double produced by the code under test. + + + The required accuracy. An exception will be thrown only if + is different than + by at most . + + + The message to include in the exception when + is equal to or different by less than + . The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified strings are equal and throws an exception + if they are not equal. The invariant culture is used for the comparison. + + + The first string to compare. This is the string the tests expects. + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + Thrown if is not equal to + . + + + + + Tests whether the specified strings are equal and throws an exception + if they are not equal. The invariant culture is used for the comparison. + + + The first string to compare. This is the string the tests expects. + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified strings are equal and throws an exception + if they are not equal. The invariant culture is used for the comparison. + + + The first string to compare. This is the string the tests expects. + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified strings are equal and throws an exception + if they are not equal. + + + The first string to compare. This is the string the tests expects. + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + A CultureInfo object that supplies culture-specific comparison information. + + + Thrown if is not equal to + . + + + + + Tests whether the specified strings are equal and throws an exception + if they are not equal. + + + The first string to compare. This is the string the tests expects. + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + A CultureInfo object that supplies culture-specific comparison information. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified strings are equal and throws an exception + if they are not equal. + + + The first string to compare. This is the string the tests expects. + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + A CultureInfo object that supplies culture-specific comparison information. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified strings are unequal and throws an exception + if they are equal. The invariant culture is used for the comparison. + + + The first string to compare. This is the string the test expects not to + match . + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + Thrown if is equal to . + + + + + Tests whether the specified strings are unequal and throws an exception + if they are equal. The invariant culture is used for the comparison. + + + The first string to compare. This is the string the test expects not to + match . + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + Thrown if is equal to . + + + + + Tests whether the specified strings are unequal and throws an exception + if they are equal. The invariant culture is used for the comparison. + + + The first string to compare. This is the string the test expects not to + match . + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified strings are unequal and throws an exception + if they are equal. + + + The first string to compare. This is the string the test expects not to + match . + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + A CultureInfo object that supplies culture-specific comparison information. + + + Thrown if is equal to . + + + + + Tests whether the specified strings are unequal and throws an exception + if they are equal. + + + The first string to compare. This is the string the test expects not to + match . + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + A CultureInfo object that supplies culture-specific comparison information. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + Thrown if is equal to . + + + + + Tests whether the specified strings are unequal and throws an exception + if they are equal. + + + The first string to compare. This is the string the test expects not to + match . + + + The second string to compare. This is the string produced by the code under test. + + + A Boolean indicating a case-sensitive or insensitive comparison. (true + indicates a case-insensitive comparison.) + + + A CultureInfo object that supplies culture-specific comparison information. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified object is an instance of the expected + type and throws an exception if the expected type is not in the + inheritance hierarchy of the object. + + + The object the test expects to be of the specified type. + + + The expected type of . + + + Thrown if is null or + is not in the inheritance hierarchy + of . + + + + + Tests whether the specified object is an instance of the expected + type and throws an exception if the expected type is not in the + inheritance hierarchy of the object. + + + The object the test expects to be of the specified type. + + + The expected type of . + + + The message to include in the exception when + is not an instance of . The message is + shown in test results. + + + Thrown if is null or + is not in the inheritance hierarchy + of . + + + + + Tests whether the specified object is an instance of the expected + type and throws an exception if the expected type is not in the + inheritance hierarchy of the object. + + + The object the test expects to be of the specified type. + + + The expected type of . + + + The message to include in the exception when + is not an instance of . The message is + shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if is null or + is not in the inheritance hierarchy + of . + + + + + Tests whether the specified object is not an instance of the wrong + type and throws an exception if the specified type is in the + inheritance hierarchy of the object. + + + The object the test expects not to be of the specified type. + + + The type that should not be. + + + Thrown if is not null and + is in the inheritance hierarchy + of . + + + + + Tests whether the specified object is not an instance of the wrong + type and throws an exception if the specified type is in the + inheritance hierarchy of the object. + + + The object the test expects not to be of the specified type. + + + The type that should not be. + + + The message to include in the exception when + is an instance of . The message is shown + in test results. + + + Thrown if is not null and + is in the inheritance hierarchy + of . + + + + + Tests whether the specified object is not an instance of the wrong + type and throws an exception if the specified type is in the + inheritance hierarchy of the object. + + + The object the test expects not to be of the specified type. + + + The type that should not be. + + + The message to include in the exception when + is an instance of . The message is shown + in test results. + + + An array of parameters to use when formatting . + + + Thrown if is not null and + is in the inheritance hierarchy + of . + + + + + Throws an AssertFailedException. + + + Always thrown. + + + + + Throws an AssertFailedException. + + + The message to include in the exception. The message is shown in + test results. + + + Always thrown. + + + + + Throws an AssertFailedException. + + + The message to include in the exception. The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Always thrown. + + + + + Throws an AssertInconclusiveException. + + + Always thrown. + + + + + Throws an AssertInconclusiveException. + + + The message to include in the exception. The message is shown in + test results. + + + Always thrown. + + + + + Throws an AssertInconclusiveException. + + + The message to include in the exception. The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Always thrown. + + + + + Helper function that creates and throws an AssertionFailedException. + + name of the assertion throwing an exception. + message describing conditions for assertion failure. + The parameters. + + + + Checks the parameter for valid conditions + + The parameter. + The assertion name. + The parameter name. + The message. + The parameters. + + + + Safely converts an object to a string, handling null values and null characters. + Null values are converted to "(null)". Null characters are converted to "\\0". + + The object to convert to a string. + The converted string. + + + + Replaces null characters ('\0') with "\\0". + + The string to search. + The converted string with null characters replaced by "\\0". + + + + An exception from reflection will always be a TargetInvocationException - however + the goal of Private Accessors is to be seamless to the original code. + The only problem with throwing the inner exception is that the stack trace will + be overwritten. From here we register the stack trace of the inner exception + and then throw it. The Unit Test Adapter will then later rebuild the stack + from the cached shadow information plus the remaining stack from this throw. + + + + + + A collection of helper classes to test various conditions associated + with collections within unit tests. If the condition being tested is not + met, an exception is thrown. + + + + + Tests whether the specified collection contains the specified element + and throws an exception if the element is not in the collection. + + + The collection in which to search for the element. + + + The element that is expected to be in the collection. + + + Thrown if is not found in + . + + + + + Tests whether the specified collection contains the specified element + and throws an exception if the element is not in the collection. + + + The collection in which to search for the element. + + + The element that is expected to be in the collection. + + + The message to include in the exception when + is not in . The message is shown in + test results. + + + Thrown if is not found in + . + + + + + Tests whether the specified collection contains the specified element + and throws an exception if the element is not in the collection. + + + The collection in which to search for the element. + + + The element that is expected to be in the collection. + + + The message to include in the exception when + is not in . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not found in + . + + + + + Tests whether the specified collection does not contain the specified + element and throws an exception if the element is in the collection. + + + The collection in which to search for the element. + + + The element that is expected not to be in the collection. + + + Thrown if is found in + . + + + + + Tests whether the specified collection does not contain the specified + element and throws an exception if the element is in the collection. + + + The collection in which to search for the element. + + + The element that is expected not to be in the collection. + + + The message to include in the exception when + is in . The message is shown in test + results. + + + Thrown if is found in + . + + + + + Tests whether the specified collection does not contain the specified + element and throws an exception if the element is in the collection. + + + The collection in which to search for the element. + + + The element that is expected not to be in the collection. + + + The message to include in the exception when + is in . The message is shown in test + results. + + + An array of parameters to use when formatting . + + + Thrown if is found in + . + + + + + Tests whether all items in the specified collection are non-null and throws + an exception if any element is null. + + + The collection in which to search for null elements. + + + Thrown if a null element is found in . + + + + + Tests whether all items in the specified collection are non-null and throws + an exception if any element is null. + + + The collection in which to search for null elements. + + + The message to include in the exception when + contains a null element. The message is shown in test results. + + + Thrown if a null element is found in . + + + + + Tests whether all items in the specified collection are non-null and throws + an exception if any element is null. + + + The collection in which to search for null elements. + + + The message to include in the exception when + contains a null element. The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if a null element is found in . + + + + + Tests whether all items in the specified collection are unique or not and + throws if any two elements in the collection are equal. + + + The collection in which to search for duplicate elements. + + + Thrown if a two or more equal elements are found in + . + + + + + Tests whether all items in the specified collection are unique or not and + throws if any two elements in the collection are equal. + + + The collection in which to search for duplicate elements. + + + The message to include in the exception when + contains at least one duplicate element. The message is shown in + test results. + + + Thrown if a two or more equal elements are found in + . + + + + + Tests whether all items in the specified collection are unique or not and + throws if any two elements in the collection are equal. + + + The collection in which to search for duplicate elements. + + + The message to include in the exception when + contains at least one duplicate element. The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if a two or more equal elements are found in + . + + + + + Tests whether one collection is a subset of another collection and + throws an exception if any element in the subset is not also in the + superset. + + + The collection expected to be a subset of . + + + The collection expected to be a superset of + + + Thrown if an element in is not found in + . + + + + + Tests whether one collection is a subset of another collection and + throws an exception if any element in the subset is not also in the + superset. + + + The collection expected to be a subset of . + + + The collection expected to be a superset of + + + The message to include in the exception when an element in + is not found in . + The message is shown in test results. + + + Thrown if an element in is not found in + . + + + + + Tests whether one collection is a subset of another collection and + throws an exception if any element in the subset is not also in the + superset. + + + The collection expected to be a subset of . + + + The collection expected to be a superset of + + + The message to include in the exception when an element in + is not found in . + The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if an element in is not found in + . + + + + + Tests whether one collection is not a subset of another collection and + throws an exception if all elements in the subset are also in the + superset. + + + The collection expected not to be a subset of . + + + The collection expected not to be a superset of + + + Thrown if every element in is also found in + . + + + + + Tests whether one collection is not a subset of another collection and + throws an exception if all elements in the subset are also in the + superset. + + + The collection expected not to be a subset of . + + + The collection expected not to be a superset of + + + The message to include in the exception when every element in + is also found in . + The message is shown in test results. + + + Thrown if every element in is also found in + . + + + + + Tests whether one collection is not a subset of another collection and + throws an exception if all elements in the subset are also in the + superset. + + + The collection expected not to be a subset of . + + + The collection expected not to be a superset of + + + The message to include in the exception when every element in + is also found in . + The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if every element in is also found in + . + + + + + Tests whether two collections contain the same elements and throws an + exception if either collection contains an element not in the other + collection. + + + The first collection to compare. This contains the elements the test + expects. + + + The second collection to compare. This is the collection produced by + the code under test. + + + Thrown if an element was found in one of the collections but not + the other. + + + + + Tests whether two collections contain the same elements and throws an + exception if either collection contains an element not in the other + collection. + + + The first collection to compare. This contains the elements the test + expects. + + + The second collection to compare. This is the collection produced by + the code under test. + + + The message to include in the exception when an element was found + in one of the collections but not the other. The message is shown + in test results. + + + Thrown if an element was found in one of the collections but not + the other. + + + + + Tests whether two collections contain the same elements and throws an + exception if either collection contains an element not in the other + collection. + + + The first collection to compare. This contains the elements the test + expects. + + + The second collection to compare. This is the collection produced by + the code under test. + + + The message to include in the exception when an element was found + in one of the collections but not the other. The message is shown + in test results. + + + An array of parameters to use when formatting . + + + Thrown if an element was found in one of the collections but not + the other. + + + + + Tests whether two collections contain the different elements and throws an + exception if the two collections contain identical elements without regard + to order. + + + The first collection to compare. This contains the elements the test + expects to be different than the actual collection. + + + The second collection to compare. This is the collection produced by + the code under test. + + + Thrown if the two collections contained the same elements, including + the same number of duplicate occurrences of each element. + + + + + Tests whether two collections contain the different elements and throws an + exception if the two collections contain identical elements without regard + to order. + + + The first collection to compare. This contains the elements the test + expects to be different than the actual collection. + + + The second collection to compare. This is the collection produced by + the code under test. + + + The message to include in the exception when + contains the same elements as . The message + is shown in test results. + + + Thrown if the two collections contained the same elements, including + the same number of duplicate occurrences of each element. + + + + + Tests whether two collections contain the different elements and throws an + exception if the two collections contain identical elements without regard + to order. + + + The first collection to compare. This contains the elements the test + expects to be different than the actual collection. + + + The second collection to compare. This is the collection produced by + the code under test. + + + The message to include in the exception when + contains the same elements as . The message + is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if the two collections contained the same elements, including + the same number of duplicate occurrences of each element. + + + + + Tests whether all elements in the specified collection are instances + of the expected type and throws an exception if the expected type is + not in the inheritance hierarchy of one or more of the elements. + + + The collection containing elements the test expects to be of the + specified type. + + + The expected type of each element of . + + + Thrown if an element in is null or + is not in the inheritance hierarchy + of an element in . + + + + + Tests whether all elements in the specified collection are instances + of the expected type and throws an exception if the expected type is + not in the inheritance hierarchy of one or more of the elements. + + + The collection containing elements the test expects to be of the + specified type. + + + The expected type of each element of . + + + The message to include in the exception when an element in + is not an instance of + . The message is shown in test results. + + + Thrown if an element in is null or + is not in the inheritance hierarchy + of an element in . + + + + + Tests whether all elements in the specified collection are instances + of the expected type and throws an exception if the expected type is + not in the inheritance hierarchy of one or more of the elements. + + + The collection containing elements the test expects to be of the + specified type. + + + The expected type of each element of . + + + The message to include in the exception when an element in + is not an instance of + . The message is shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if an element in is null or + is not in the inheritance hierarchy + of an element in . + + + + + Tests whether the specified collections are equal and throws an exception + if the two collections are not equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects. + + + The second collection to compare. This is the collection produced by the + code under test. + + + Thrown if is not equal to + . + + + + + Tests whether the specified collections are equal and throws an exception + if the two collections are not equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects. + + + The second collection to compare. This is the collection produced by the + code under test. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified collections are equal and throws an exception + if the two collections are not equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects. + + + The second collection to compare. This is the collection produced by the + code under test. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified collections are unequal and throws an exception + if the two collections are equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects + not to match . + + + The second collection to compare. This is the collection produced by the + code under test. + + + Thrown if is equal to . + + + + + Tests whether the specified collections are unequal and throws an exception + if the two collections are equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects + not to match . + + + The second collection to compare. This is the collection produced by the + code under test. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + Thrown if is equal to . + + + + + Tests whether the specified collections are unequal and throws an exception + if the two collections are equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects + not to match . + + + The second collection to compare. This is the collection produced by the + code under test. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Tests whether the specified collections are equal and throws an exception + if the two collections are not equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects. + + + The second collection to compare. This is the collection produced by the + code under test. + + + The compare implementation to use when comparing elements of the collection. + + + Thrown if is not equal to + . + + + + + Tests whether the specified collections are equal and throws an exception + if the two collections are not equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects. + + + The second collection to compare. This is the collection produced by the + code under test. + + + The compare implementation to use when comparing elements of the collection. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + Thrown if is not equal to + . + + + + + Tests whether the specified collections are equal and throws an exception + if the two collections are not equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects. + + + The second collection to compare. This is the collection produced by the + code under test. + + + The compare implementation to use when comparing elements of the collection. + + + The message to include in the exception when + is not equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not equal to + . + + + + + Tests whether the specified collections are unequal and throws an exception + if the two collections are equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects + not to match . + + + The second collection to compare. This is the collection produced by the + code under test. + + + The compare implementation to use when comparing elements of the collection. + + + Thrown if is equal to . + + + + + Tests whether the specified collections are unequal and throws an exception + if the two collections are equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects + not to match . + + + The second collection to compare. This is the collection produced by the + code under test. + + + The compare implementation to use when comparing elements of the collection. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + Thrown if is equal to . + + + + + Tests whether the specified collections are unequal and throws an exception + if the two collections are equal. Equality is defined as having the same + elements in the same order and quantity. Different references to the same + value are considered equal. + + + The first collection to compare. This is the collection the tests expects + not to match . + + + The second collection to compare. This is the collection produced by the + code under test. + + + The compare implementation to use when comparing elements of the collection. + + + The message to include in the exception when + is equal to . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is equal to . + + + + + Constructs a dictionary containing the number of occurrences of each + element in the specified collection. + + + The collection to process. + + + The number of null elements in the collection. + + + A dictionary containing the number of occurrences of each element + in the specified collection. + + + + + Determines whether the first collection is a subset of the second + collection. If either set contains duplicate elements, the number + of occurrences of the element in the subset must be less than or + equal to the number of occurrences in the superset. + + + The collection the test expects to be contained in . + + + The collection the test expects to contain . + + + True if is a subset of + , false otherwise. + + + + + Finds a mismatched element between the two collections. A mismatched + element is one that appears a different number of times in the + expected collection than it does in the actual collection. The + collections are assumed to be different non-null references with the + same number of elements. The caller is responsible for this level of + verification. If there is no mismatched element, the function returns + false and the out parameters should not be used. + + The first collection to compare. + The second collection to compare. + + The expected number of occurrences of + or 0 if there is no mismatched + element. + + + The actual number of occurrences of + or 0 if there is no mismatched + element. + + + The mismatched element (may be null) or null if there is no + mismatched element. + + + true if a mismatched element was found; false otherwise. + + + + + compares the objects using object.Equals + + + + + This class is designed to help user doing unit testing. + GenericParameterHelper satisfies some comment generic type constraints + such as: + 1. public default constructor + 2. implements common interface: IComparable, IEnumerable, ICloneable + + + + + + public default constructor, satisfies the constraint in C# generics. + This constructor initializes the Data property to a random value. + + + + + This constructor initializes the Data property to a user-supplied value + + + + + + Do the value comparison for two GenericParameterHelper object + + object to do comparison with + true if obj has the same value as 'this' GenericParameterHelper object. + false otherwise. + + + + Returns a hash code for this object. + + + + + + Compares to the object. + + + + + + + Returns an IEnumerator object whose length is derived from + the Data property. + + + + + + Returns a GenericParameterHelper object that is equal to + 'this' one. + + + + + + Gets or sets the Data property. + + + + + Provides method signature discovery for generic methods. + + + + + Given a set of methods that match the base criteria, select a method based + upon an array of types. This method should return null if no method matches + the criteria. + + + + + Set of string assertions. + + + + + Tests whether the specified string contains the specified substring + and throws an exception if the substring does not occur within the + test string. + + + The string that is expected to contain . + + + The string expected to occur within . + + + Thrown if is not found in + . + + + + + Tests whether the specified string contains the specified substring + and throws an exception if the substring does not occur within the + test string. + + + The string that is expected to contain . + + + The string expected to occur within . + + + The message to include in the exception when + is not in . The message is shown in + test results. + + + Thrown if is not found in + . + + + + + Tests whether the specified string contains the specified substring + and throws an exception if the substring does not occur within the + test string. + + + The string that is expected to contain . + + + The string expected to occur within . + + + The message to include in the exception when + is not in . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if is not found in + . + + + + + Tests whether the specified string begins with the specified substring + and throws an exception if the test string does not start with the + substring. + + + The string that is expected to begin with . + + + The string expected to be a prefix of . + + + Thrown if does not begin with + . + + + + + Tests whether the specified string begins with the specified substring + and throws an exception if the test string does not start with the + substring. + + + The string that is expected to begin with . + + + The string expected to be a prefix of . + + + The message to include in the exception when + does not begin with . The message is + shown in test results. + + + Thrown if does not begin with + . + + + + + Tests whether the specified string begins with the specified substring + and throws an exception if the test string does not start with the + substring. + + + The string that is expected to begin with . + + + The string expected to be a prefix of . + + + The message to include in the exception when + does not begin with . The message is + shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if does not begin with + . + + + + + Tests whether the specified string ends with the specified substring + and throws an exception if the test string does not end with the + substring. + + + The string that is expected to end with . + + + The string expected to be a suffix of . + + + Thrown if does not end with + . + + + + + Tests whether the specified string ends with the specified substring + and throws an exception if the test string does not end with the + substring. + + + The string that is expected to end with . + + + The string expected to be a suffix of . + + + The message to include in the exception when + does not end with . The message is + shown in test results. + + + Thrown if does not end with + . + + + + + Tests whether the specified string ends with the specified substring + and throws an exception if the test string does not end with the + substring. + + + The string that is expected to end with . + + + The string expected to be a suffix of . + + + The message to include in the exception when + does not end with . The message is + shown in test results. + + + An array of parameters to use when formatting . + + + Thrown if does not end with + . + + + + + Tests whether the specified string matches a regular expression and + throws an exception if the string does not match the expression. + + + The string that is expected to match . + + + The regular expression that is + expected to match. + + + Thrown if does not match + . + + + + + Tests whether the specified string matches a regular expression and + throws an exception if the string does not match the expression. + + + The string that is expected to match . + + + The regular expression that is + expected to match. + + + The message to include in the exception when + does not match . The message is shown in + test results. + + + Thrown if does not match + . + + + + + Tests whether the specified string matches a regular expression and + throws an exception if the string does not match the expression. + + + The string that is expected to match . + + + The regular expression that is + expected to match. + + + The message to include in the exception when + does not match . The message is shown in + test results. + + + An array of parameters to use when formatting . + + + Thrown if does not match + . + + + + + Tests whether the specified string does not match a regular expression + and throws an exception if the string matches the expression. + + + The string that is expected not to match . + + + The regular expression that is + expected to not match. + + + Thrown if matches . + + + + + Tests whether the specified string does not match a regular expression + and throws an exception if the string matches the expression. + + + The string that is expected not to match . + + + The regular expression that is + expected to not match. + + + The message to include in the exception when + matches . The message is shown in test + results. + + + Thrown if matches . + + + + + Tests whether the specified string does not match a regular expression + and throws an exception if the string matches the expression. + + + The string that is expected not to match . + + + The regular expression that is + expected to not match. + + + The message to include in the exception when + matches . The message is shown in test + results. + + + An array of parameters to use when formatting . + + + Thrown if matches . + + + + + TestContext class. This class should be fully abstract and not contain any + members. The adapter will implement the members. Users in the framework should + only access this via a well-defined interface. + + + + + Used to write trace messages while the test is running + + format string + the arguments + + + + Adds a file name to the list in TestResult.ResultFileNames + + + + + Begins a timer with the specified name + + + + + Ends a timer with the specified name + + + + + Per test properties + + + + + + Current data row when test is used for data driven testing. + + + + + Current data connection row when test is used for data driven testing. + + + + + Gets the test logs directory. + + + + + Gets the test directory. + + + + + Gets the test deployment directory. + + + + + Gets the test name. + + + + + Gets the CurrentTestOutcome. + + + + + Outcome of a test or a run. + If a new successful state needs to be added you will need to modify + RunResultAndStatistics in TestRun and TestOutcomeHelper below. + + NOTE: the order is important and is used for computing outcome for aggregations. + More important outcomes come first. See TestOutcomeHelper.GetAggregationOutcome. + + + + + Test was executed, but there were issues. + Issues may involve exceptions or failed assertions. + + + + + Test has completed, but we can't say if it passed or failed. + May be used for aborted tests... + + + + + Test was executed w/o any issues. + + + + + Test is currently executing. + + + + + There was a system error while we were trying to execute a test. + + + + + The test timed out. + + + + + Test was aborted by the user. + + + + + Test is in an unknown state + + + + + The data row. + + + + + The database connection. + + + + + Marks a test class. + + + + + Initializes a new test class attribute. + + + + + Marks a test method. + + + + + Initializes a new TestMethodAttribute. + + + + + A method marker called before a test method runs. + + + + + Initializes a new TestInitializeAttribute. + + + + + A method marker called after a test method runs. + + + + + Initializes a new TestCleanupAttribute. + + + + + Ignores a unit test. + + + + + Initializes a new IgnoreAttribute. + + + + + The ExpectedExceptionAttribute. + + + + + Initializes the ExpectedExceptionAttribute. + + The exception type. + + + + Initializes the ExpectedExceptionAttribute. + + The exception type. + The message. + + + + Gets the exception type. + + + + + Gets the message. + + + + + The test property attribute. + + + + + Initializes the TestPropertyAttribute. + + + + + + + Gets the name. + + + + + Gets the value. + + + + + The ClassInitializeAttribute. + + + + + Initializes the ClassInitializeAttribute. + + + + + The ClassCleanupAttribute. + + + + + Initializes the ClassCleanupAttribute. + + + + + The AssemblyInitializeAttribute. + + + + + Initializes the AssemblyInitializeAttribute. + + + + + The AssemblyCleanupAttribute. + + + + + Initializes the AssemblyCleanupAttribute. + + + + + Description of the test. + + + + + Initializes the DescriptionAttribute. + + The description. + + + + Gets the description. + + + + + The OwnerAttribute. + + + + + Initializes the OwnerAttribute. + + The owner. + + + + Gets the owner. + + + + + CSS Project Structure URI. + + + + + Initializes the CSS Project Structure URI. + + The structure. + + + + Gets the property structure. + + + + + CSS Iteration URI + + + + + Initializes the CssIterationAttribute. + + The parameter. + + + + Gets the CssIteration. + + + + + Priority attribute; used to specify the priority of a unit test. + + + + + Initializes the PriorityAttribute. + + The priority. + + + + Gets the Priority. + + + + + Timeout attribute; used to specify the timeout of a unit test. + + + + + Initializes the TimeoutAttribute. + + + + + + Gets the Timeout. + + + + + WorkItem attribute; used to specify a work item associated with this test. + + + + + Initializes the WorkItemAttribute. + + + + + + Gets the ID. + + + + + HostType specifies the type of host that this unit test will + run in. + + + + + Initializes the host type attribute. + + + + + + Constructor of HostTypeAttribute. + + The type of the host. + Custom data for the host adapter. + + + The reason this is string (and not object) is that currently CMI cannot parse arbitrary instances of object and we deprioritized changing CMI. + + + + Gets the host type. + + + + + Gets the host data. + + + + + Used to specify deployment item (file or directory) for per-test deployment. + Can be specified on test class or test method. + Can have multiple instances of the attribute to specify more than one item. + The item path can be absolute or relative, if relative, it is relative to RunConfig.RelativePathRoot. + + + [DeploymentItem("file1.xml")] + [DeploymentItem("file2.xml", "DataFiles")] + [DeploymentItem("bin\Debug")] + + + + + Initializes DeploymentItemAttribute. + + The path. + + + + Initializes DeploymentItemAttribute. + + The path. + The output directory. + + + + Verifiable interface. + + + + + The IsValid method. + + Returns a value. + + + diff --git a/dep/FluentAssertions.2.2.0.0/lib/winrt45/FluentAssertions.dll b/dep/FluentAssertions.2.2.0.0/lib/winrt45/FluentAssertions.dll new file mode 100644 index 0000000000000000000000000000000000000000..470a6e5ba8a014222608a85e247f1770815454da GIT binary patch literal 186880 zcmd44378#4)&JkqeQ)2HJ2Odc5@xcI1Oh`dcP4=Z0wEG0K-eR@3H!c@G~Ao84Koaj zs2C7IQBV=1xbG{X@*?hl5_j>1h~kRk%B!zi_mA?Zgkx#pka%`|>r! z&-!-KF13~a`QKd6J8gcgUON+@qYVPp;O{kO+?Q6*ubq8iOh(b_L9^ld(U^S8m7M?W zE57m*ZN69Ze*O>7``xo`UWY*&mm}wT-e@Db+0b^wcYf=b?-y5o_|ZRXJoalR{qtqF zeq+O{%cmUpr?0$X_cy)j-NSEw(mVFA4_@Lu_L0xE-w|E?{e{oWUHr(e=RNu%?~8{& zdfbP8e(F!&zx3}tOFmzk@J#=*o-Zx`_ujvI<+7*FyzlW-;=7_R|K^bQKK)Q_;%)1m zz4@&d&bjJ+Z@J>q?KbrP#e2!aJ6^um&%Zl(%fWm3(Ken}_JiRbZvC_Uq2zAh{zLtt zUL_Ar;~Gy_7SEfqi|=hmi`qP|Ql9~=9QwmExrf0peO?YXh1+tg&*svXcXwCiLVxHxbX$Zxhy7L;Rj7L^_5UTG>QXwD{GF()WVUNXKV|1q zR}6J!Xx|iWPoO@JOM))LM~_$P3@W32NABS3Q)VOD^JebS=Iu(oh)>0jcOoUGx#e=T z6vh#OzA)aI+u)xzR>HLmrnb(~Kv;_5PWf>zUK?Y`N4loW@hU_;TK!xb4O-~etK_NQ zuL!`OCcps!A4`D0P3~_I3&=D`qV9Jm@%f5_X@LrTIm!I1_&)M6AE#^ z?&ZP=+$_g1svN_Za(xltFxs7Kqi#ehs~fR#bsyDI_y1Y7;GKeuG9;zTEB;zFVX!>e z+q8{BVZVQm?l3W;YZ*z(A9(Y)mz007vj(#+uG6LEEB%OW56dGoq2Pz{pNWY5Za`A5 zV7k0r<%YgTo@qBxwyhlY1na}z!ul}&ld2H@eZh||tknMvZy2k!lU2#nBoC{gzlOow z##q}#avjMj$4E-K_a?x8XQ?MN^y^FgEB#>P5K?-qrikvVW&};yrRZ&>p0esWlzXSE zCV~;waw!-LrdB(Hh-Oyf!$=-JoJ$x%esyq3)QP+mit!X~wPA>xZZ&kZ_c*y&-`;C9 zuWz4L8dAaa?eR47_JtdWwV9CA=C*kkM=MF}?%42BZqbok)}XQ4B09WWijL;0{N)V{ zh?x;HW;r^ROV5Vm6l`QiHfcSD+NKmLg`SS}l|lsnsu7K=wsL_A8eBLuh`=5CL#u>Q zX#3%bcykGNvR3M=0k-fa$CVRE4NIHC6S>z<;u3X%f1sH|{j_vT91@b0LszI8_D$jGfa_fnyGrGBoOfNK2sHy})_xzMU{B`TEYG$AVm(M2T0 zlO<_C&M;U%2lR7qiHno1b~l+^x3Szl5VpHn#P4@=NXfhA)e?2hA#Om{{Gk}cfva$` z8Z||Yx)@+81MeU|&8^g7I;{!f8u#Hk7eAV+%*K#yRJMo9;C?f07%&8D+Xvpo>q}`9 zOVesA4KTf-B-fW_)Gjb!v<8fIYroH^UaMFpN`u=OA8HqqwKpAQL3}BhQjzfy@e!0| zp?)lLLr{pApd|K9Fl>)8u$O5nN%K90GNJ7Be7*!WV;tD8q_#)uf1?LSrSYUg!cn8* zXCy^+I?VCWH+_c0RO**ObvamzI@44?qZD5bpo`ABg1h>q8ed7MIyEp&JkS*erhwxi zpbce;fprxCnMK1Epr15m84|L8E5m7>6h)`;A{$&!#pL*>S47EUnII<+12T{DzRwA=gl4 zUsLtg)(fbefwh^oruC;f`Xf}DHIMlwsnuB2Ik|09kJ#iC!_M?$K)E;4i{sS$dg^6( zx_TRgnm%!S)AX6cXNu-p8nHQsY*S45?{pBOr-4>O$cXHk?B|fKFO6kezYo>XOo^&w z0R?2T5HLsINeym}w%&5%IM>Ne#;#9kOqqsFkm$u$ndnUhV9Lk(D!PI>Xf%=VHMg=l>G#j>!tV?s;q#QRZhd>68=BOXSfvBk?&uveM5cA{Lk$ZD| zzm0aG?8a%=woNFv?`UCHi!4NQMMzI)b&s%gXChtAL_G=y#~Fw!H3>thcU5O8y!rfv zU&e`tdKcmkHA8j3NsH z*^SJhEeg6baBb)+4HVi3+WJcalf&9*xtRyS;G|k-r+0B}9+&#8@tnT zW;DrOYHmUyEt?urra#{Wao7x-mC;m59x-8T|9lfzu77fbnhJ|{q#rP+T%?c4z^*3u zDbA-TpG^iqHU~JCkE8lqg!Zkl*V^E>d0N|5GzXkGv1ty-(d2|K)uky7-ypvmIhn2L zSeuY-ZOCD1v@9`PcRBa;J7dh^yP zY2Tssa>him2<=H!Pxs^?u_=&~@{~e#Eh8Wz*x4v!c1rLzVV)U)Z~}B4y zk7)`~zxv)0+_4QR^|zCs?vQMDRu}jYhFZ0&)E?gre4tF=9R&JtzqQBf3HiOzPUNs@ zWRmBbO)>b5FlOv$YoLqZ4Tglt%)Z;CGLsB~xs=8!U<Eau zf7zHz;2ZW_B^W5xo}TVqTrJknkr$7(P6n1X5j&MkVeLw;xwWG)v5D?PIC8KY3xk3F z(#VG)%?zrKh;27=85PLjQ8i^?H7bpKEY11xET=#Qj|S45T|M2^)kbQmLY0|o1Xb&7V^M&+4M=-FYwHHRPY8~(ICE$23kim1j-(yU{&!z?M%L)oKqD!MI zhSlcQvZif2HBLUKvY%IpL3N(AXjl7SvzWO?eu1Xu#Y{Fs4)3@sgs~|eBO!XuWP0JB zpxK;WXtu!4oRw3p=BsOH^mKN1I&4h)SX7vL?P|9c4OE+k&A&3lnZoI9&va;Bt`hq1 zuzZBw0@H`d0`nDjvy%@^aP`V+HdrzT?en4NM#t0$b=VLDYc6DmGG z0G%vDjL%=C+}81#rDS6Y+YFy`jW*rEge!`1&NJsb>YbHUYEQgQ=`{Q847)KqRhc+V zlYyOTr<|pzw)~B@u$mgj&f3HHlP=+E=gdvXhe3fu+TOIfNKCFVZ3tW=798K25=0Bs zIIE{rXeh6&&hG8fNtty}LFS^Xw}ZJju^X#Sn6o06P$bcEn#T(^dvBfvHg4{K2do#z z;X(6Ac`C!5Jjuy5sM*hE%NOf2XVA1PdT!W0C9>5K#MC#=q6hlaSE!iGrk^)&Yvt}X zaypKvde`lb^`8!5 z-;sT&oVpVV(XKEd0nrBW_Lbb-_}nb@*X*29uc7I@2XfyS_30wnVnMW!3R;A@VZqyg zv{EIs&2$!_*?>&AE1C+npMwQeC8&R0EC~zoH@N#@-jsg`NM_2jGvs07@grOU_vlG& z!`$~+@>J^I1g;Gs%H-%yglKUSXB!QL($Jx_2SoCoJGzqvwZ(YG^eqt9ALSA)Qp20k zb@iuwL#z@6%zZh$&9ar+ddvNx4WM)lNo~Bh(UzUnmT!~P$zB1qby)eV2@ZX<8&ove zsJB5w=D2Km++~g6nd^5z;u^6##hDg`Wx%-t((!dhHEoMDQX*^2Ofkl^@pL{a)10FYl`|~pt(Qp&(JmZM+0wjf7tlg7TcQD zL#1}qV9LoH2kgmia}%0Iepve}#iAcVR?Z2Q$U?f}P5N#z6(#fan0^dvQ|Bjm@_zqB z45B?KipjfUUYf(&%JGU+4{z_?)%jhLzRfKaq>;IK6g@1KAVSJOPO= zL2W-q6P?=rF(IcX--ygQz5U<7k|Ec`pV|W;b`vOFoa${xn+jyg!D2Cfi}Gd^_>2Xq zO0=G}!tJR+)1JDGvfh2dD0KQSuggCJnpBr>mf{7wq!eqiXy|fRX<{y?x?Dgbd^5WI z0g&Z%x#8G?E>8%TZo_|;=F41uCO5uVg7nmz&hbyn1L zw(?ms*6pvkC7oF7IeIRDo_5BG>$;{nIz@WT!mXyqbXZz$!lLHIh@aLgU*=_uPuA?s z^)~CSODXSUEVHJJ7m4oDlaP+x@U+k5k~|5CH_~F)6bnX6U{W3sG{87)cO$iBfp$K~ za<;PVv0!*5D}~Z{MW*eZ716>}jv8}&rZOd(;-7Gt5?0U0tNA2Bw_=6P)p+QexQK%v?!&nTnWq%7Zs=>}v9+CY|8+h5X*T z^sKfnL?GK2@}NKTGm073ph1{F^c2t>py7RU*326r?Qp!j$CUJc6V5<^s_xtY4o#$KW}H}vY8+xJwDjyx^a+c&qjzk2!F&cxHXJ| zYFjU=dH1|(u00F2iEyZ=9e#Cp+6##{E|GNEMD&TrD!bzM-lXo4CH5`_*gh8hk_ub5 zXBmt#(iQ*9ozbOAr?9%C;Cp&*p%7vg}2cDXfjN#_7bnc!h<o5I(*?N`(q=n1 z*S6-lXve)$)XjFTH88Vt6$|2Dacx<6K9Cj9bS977TJ7A%+~fL`Wr_M!gVy>~0rlyx zsi3t_4VLRuta7;;XEr8^-i`3WtzFb9TW){r&Ng{Sxv+oIosg4^%7(UH$^>v!YukI>5ksd=t)e#*?p za^*fL_o%F3$~-4U(-O+lS`+nZ(s-InbGkJ#l&rkN(wGLay7t&Nt&5IN>XO-H`d?;~ zwJ;glRX1|8!at{QHmfFunm7OJAZd@;-|kWzE`fb3O|d7~``LrJFHvTig{^d?a6i_UV307Ou64d8_rv;ISR4`-F~&Tz8->3^n*1DFc6=$LT(u* zWw2gq)`0APjQ&TdXAoG1vdKFdaN?RG9s?UMGc&Co-)IM&1;@+t_eLHI?&SwPH?4%m z=pRafezk+X@^+`~_AI)SmjKq2SSp9?`uQgzs&LPjqkp+V+V74Z+hb10Z}M+|@|$c@ z)-aEL{Cv-i$u}dqk3Q{hypl7C&8hwG_ph4FJ>qp69{Biv^bs=E+lUPdo}{v0q};!l zcWttSe%@gzcqc<2OI7;wqZAwPd;9$%p{*UrAd1lhY|@Vcpdhl=Y9H1ylqb;s%QJyKOQR`-WjM+(1I5P^GKKeGsA@2TOf^v@aoc zjnAz8h-BZEi?u%!jEXeMP0h*v-Zt$I@R+~Z|9vU_vG!O4Yr2T`Pj&L) z#s;%+n)hs%mko0zQyD9 zsJkOBQ&(r$VYJz{c@xpVj_Hm%0jqYea`b4tD{(Is3G$~d=%)|e3|6N&^ zCj012P?K)XPDy1T$O!{_UONq zPvboB4uD&G!`q&6b$52gvp>JQpwADrwXe*M;%F-Oz(v`+Ytcfy4ZuM^?ANxJ(DnnB z7e2TRa#`|FU;0BXgeq7)J?i0Ju6>?Hy6IX*3>bR>_e|}Hc=IMS3&Sn#Z8Sk!0BuKr zOFzH%xLEWg7h_TFmx?}}MgOSivsv^Xif+oHg%w2Gxj6RrJIdI{1ib~TgV9pyH5Dk@ zAjZPZ7>yvSIxGG_on`hWsz>`T@Oyf#f$AOjlYongfhn=lC(N29=ot?H+GO#Ff9#kG3Z=LW3Mv z@lS^Jd4NU*GI(^5xO%XfoO*SawIDjwHP0V4g4DIukYpmp$%GExK@(Zxu?Pd$awMx~<-<5a8HL%H?t!o%{zM62E* znwsT1JWoE&_?~#n8!JBpD}7}5q>qsGDqUgpG8ucQhe~~$gkI(MqYacE=_P1{K9&(G zkikz>XfkF3#utNY3dP~ z^DY#6(T}U#OMX1SZO>~cREh@)vT5Kupo!-bp3+{OQ)!PE5bQ?tVpo+1 zClIib9afU$oe{;sAK~L^XUAOf)=zu%U64pASHi)G6<9khZJFi^Yc5KXGMi?(9G&nho_t2evq75lOB{!;iqdiHFUaEdDd#hVRhCNGVqC>OP9ff!=MN?s4 z$qH^M0DtJ`q&kg19!xs?V%mfXsZ8yh+Et$pi{!UbF+X~OCJ!FzM~`za4R+%lnjsdx z1k5a>kA$8<_F5}dFY8sSvs|Rzvd&Di(w#?>${QikG7;$vx{Ow6K1MA&9-5VIF@NY6 zP>_tlg1vW&g5$kYkTPjlqvL(ZJ%ZWcMEWO?QQsHPs6YnSi-Of*VR9vS=Cy4~m4`=eHKVZG64X@BW<$g5CJl>dDJC6>U zx+&njxX^nC{ADDeua&e$NhshQ(`=mqqaPB(f#EPd0DN&9n7XS+b=WS{u44QlUeFrY zwh*+lVe>#Tu!B>#cvn!wU0kX=CMkODFiesep(F+I&dS9L)L~zT8z%4BIJLuVFlA^k zTzE5=3Li&%q_REVJNdOX&7e=5uO3ZWi7;kD-VBx+HxGAh0@Gsdc?u$ZqGc+$cKijj zK_i%!`YffgxjdJic;|a_rSlH^+?!w5`t=oJ{G5#OtbBe))BQrk(p+yT4$UQPpv&Fk zgUF5XDWm>i6;vX`7`~9I43kE$yvM{m(7n>UYrH&JtQGpEZ z(9PALM}{H=hE<5Jw$;cmSQBD`0hp_35dRxQ@pB-Os0rj~nGP+?*Gabc7+8UxR(gCa zVVh(0Z0J_IEfk-`tuL8Rzmb23HjGauDS8@hf}(KGP4@GaUgh4W zy(n$-DP$UC*f|btvc{+SK5(UHC-KIcoHI;o^dCJk2orW3?Ch(v&v=e!>U}qaT7neLdAD}Dl4=Fs*;}1oGSyJ^~7-oW3;ITHYet>lcG&ZYG`Zum85qSI*XFs4T;hrzJO@TXeE{e6D#@POik zg5j!#mixFqvwO@guH$EK*`1`}!--wrN3n{g$JQD6PjaL|UYDatqS<%_T z;V`Z440=ko7|HY%7T|Bl+hdD7ta?xxuHCs~1yt(Wo6ZV`l`FKohOlSXX|5Ku*gOr@ zGpQvyNrS3KIAlle%N<(*nHRqXccfh`mv~Doj93KeUWiz_5U?H(wT4EwDs$(?cE88i z{CFvO-y46@V!6{i?{RDxQ^A>PGyD1uwn1*BE?ZAB|L9Dh zN^L1=_48CX)MUcyCaj+?gcop;9tku*c-S|UIUVKdGS$IuGHA(W z(gw8KZ||@MO!C6s)%X(^-0x$&_(KxdWLfR{wcxFx9&Dx5@6ur8U>B?xTg{UZ7NC>m zQ&@jFBt|FGucrJ$(_Di=Q0+oGO;eqNT0lDAM;mi1?N2D0t+b;rNqH}GtP7AfmJqpk zuZyp6a-fPr^NB#tO!UMh(2Qw^9BJG~I9?#tRKP(=2~*A<P7pS}A@70lG;!a)MQI z2Gf%p%Z(Fh($VeEIP&5h!5@1fkb0eN+`-%7V5b`wCvAvNk*Lr1V-^b1Yg)_LofU@) z>V5L_D6gMC#K@aQy0jk8->42v3n=xNg3Vi*}Kc;`b4wl3%UB(tv49dS&!J8Be*stCJ+mEyoY zB|}jA0$piX1}7&Fy{u`Ffr+7(SYhhCVH#G{W*6rlRR3u_VVqO~<3n7dj?U^-rl~q1 zv_Q=IiVfymfUN;G_|(P;dV~En^nY@6kn4voZ@WQn0_ePDa%|UGNVPb&@t2AWS5yWM1f&RQg+;hbvIg-wXUq? zMYX5;4k?LJIN0uhB8p`$ zvZb=de`nL7`91y^qf1EeV^)=6d=(U9o-L?-6A{W*2`&-Wn#&sxlPk4xM+jdTW-fJ} z>PJ@tT2p2uUYXjJD+4Rz4?QFLZALVGdnh!ZsVen;x>C+a7R_Pp(nAr}AEKm&mEG5> zG>rG-!pv1wpN~>ObOtg%Y@}NQ+`=g9;u#}*QI_ba-RIX?vV{>V)=xV6m8uwBtEUqVa(xPscSrNAZ+j_FC6)U16cNp@^fkPYdo=PpBkBoOaU z{rQB>+RZe!ZvE-<#y5jV&Xwwv(&SQfizBf&A+a?4Kf>xrEcvpNMB=Atn?IzaDJ6e$ z`=)JPFB02b=7hvj^m>t4a)~2LjV}DNtSZC$tt5>KWbg=kuR4N0a+;KtWLUpVIRr9z zgwn1~>F_HZ!+!?m59wbL!7aY=p%xu?Hg z;$?(+v1@7&y~$;kEFfFnY4q`A&mR_3S(n{G>aca2m$cR!QWSSQsVMa7WY1`c-s14+ ze733JIUPLFTY<%I<5J#O?3-HNh`36R>et=v6(Of><}PIqmFpq@CR_gta#j<4=sN{% zW6M(b@A)HtB|f-A&xVy0GZ*g$3?cVmEV_$IqPKGyRW8dqbT?58jr>g|ck8Kbdzg1| zqfqZnuLYC6q}DSvdI!1Lb`-4_rgsXHN?FmNcL|fC8!+dR8WE&&d=ClnyLEXFm*Ibq z1%cEpdanTg6ktf#hyhfNE>P!&lS4N^_GN&mk&@|u>3-GUxlU%|(96l!Q{H&GKO{I( zFX^(;QF1xAv4SA7(Gj}D&W*GBrlw+Ihz((T^a1L2V$y(?q7MS?-;W7izi$3etRCY? zXR={_=)e2n!srz4gQePmB=c_R%eZxs zy}gmOb_p8-|5gBELhqt! zgv6EJMam>LF=x9>^8q|yrTnZP%gNkQ^lqVj3=@2nw6eTGB4y)t(RQ^fAjQqH@-W3; z1V`eYa}V7LG*2%pSBvJE;2{x<$#7urVh}$_-oa@EzCos9 zR&(-Pygv-0FH?r6nr0w62ht!1YQgccZ&@uEe?_@^`!C8pp-1TMds4k5N+!zqujwu?rGFMj1F@jol73~ zG)kZmUF=aqSNq7mX`b_x=Nq6N70BSxD;Q<*L%=wKU?xu4hY5DWtd2tOs$z5&C0uqt4nC5IPe~JBf^WY?&;@-y}oQK}-;}^U2oO1z9vE;ZsTqa3)EQ`nyI0l0)9m zKk1ypvOvf4wauS1H<*4x{aawpq>{1clcceiDx7mzp|avfK|g0#6kfqFgOc%C^y=K1 zj(L_*XY~?xwHJn!zr8rD0__tD!z$u7)wsPkb74D%6FlLC3+vn3bu>tiJ2*dYS6O>6 zhbkU-XhmylO!wT~R@hf-Xx3gsfs97TR*Ot!7)`f96Vq-bFq5=wBFF0Yj*PoZo}m+E zNgJ#S9g92Cj(ZgFz~N!6yL-B9ldO$1b{6);4Ak$Z}K~`94@YF_-IXHz5H-gtSf|oRc zbbp!`Gc65bJf*=~8bKDrDfFByII5OwD%mFC@d}f(py7_mI%4}|(?A$oKNtazFL4ALV^0pll4qfy` zTq_oj9#cKJ(h!u0IsNZ@tVukS7;~c%7*jXE0mjVP}d zw38`OQ%6_Hp8fSM>TWMZv4-0ZHNJ?v7E~_cY!}>A9^zABGW&1vr4w-}Vm%XbYR+ri z?bYt~DsClP@0~_D5UZRlgPvVvKRm9`u7@QsY@X-|;mlIzhPM4CiL;NT_7`Z5Hj>Ha zX1uPoe+nXMZQk#{i_Ee>dUl-^BthqadrtW@r8V-&U`g^R=<)?ejLG+tMm_~yzEX3( z8%%lm(K=e})Kn)K{ODpa)0EZGY#+n&GZ_!o3W-Diuybi zf^a0zq1_z`Qu)K?K+788G)9zhJFJ8z3?iqCOHLJMEit{wnDy3D#=W%^{~Q8x4^gvy zyXR74=I{vC9Ryw+9)%>3?Ax`{_bAQac2+bVVtYIGZM3q_um1x4$a+z_*t=AG^BbjB zN53RF*_B(^6r_)GGb)~i3inE#HZxg4+g|0!nU<0>J#40{{wvk$=3uq=vPOG;z9 zIBl;Br0rGddjwjiiyecVw)gF>y}wb-X?rhs?afN9j-DoY>)We>)?P;i?R5d#>jLTi z>EEi>MtiSlwD)(UY(@XFGIRaw0%?0y`W}JS>0;-Lr|o6AtNwjPHLJZB!RISod$Ur} z?@5jRz$I;S^hYB0xPEhetisl2M+t3q0ov>WX`BBOvhtm?>VSYc6>tpudYJXw_=?7 zQsk*jr^ufGd1K$S+u@(SJCVnE_~vmInyB6Hr8#O{%b+%Scc2-wXnpDC@s2qW?wwnY z+W5W&nwt+=n{wp;70rcK{tj(DYNHvOZH%nAzFRoeakG$grPz}m!k9_#pQz3)H}bMl zNcxorb>j%ljM}9~F~QvL+~A3gH8{r))($YrqQ4f}xe~KE()Vbr)@E(SZ8*f>y z0%f&sdC)1V4Z3lvw00jhUY#1MX$7r<@mDyx*@0(G**xAn;m?ED5uPfk2Hqo~cPP`# z)(tw+UlfNXEeYLjpro(s&ObUOS`(m^YP>O=@qcS^JH?UWUbj`ak9r+GTU~`@^ZDp+R!ra9dgRb8{Le@K7zK6ku`h^zY_;*n zx09EJ(;ai2#z|#pJWcg5^=?s9jWg0(4l(_g27J=)L-KS5j);3C&30@_(+supxO|H@ zH>%mnv`&L3`nPKNSu%HvD5t#AahHnk{b0>)_rn(1l^RzkA91bHZMet`3WD22G zL=9K=!j62DdN@AB6H)g_(gNy#`KqpJjO+g*qqeL)2Q33re7QtJt>N%-Ia9+O;+xWN zTV`tD)aqIHI+@t&{K;QtNBA?l%wDEWHV$%}66S4mD{jf82iOAilsqAx0iDkg!_ zrW7X^4Xu5tXPpuo9aW-`^Ff^meJt9NwU(8XY>ZD|yV2Kdi5~T`R77+1rE^Q8o=2%? zlzJw%70$je>Hras9ttkxPC;>G(>bp4K^IpO#hfrIa~+^JtZ{k(D{v|5@%%xAOGOtN(w=Q_Z-oq|Q6x{~@Wy(~r{s*EY+kbdSWUX)?SI zO5ChtLwbKxIX0x(vGnp}){|7GgVXjy=%HEbNo)Nlrfsrum>l?H2Va;}r-Ey{6@(xi zs7(q)dUR`PAECwgD@|0I~4jk^_m7lQwo_VDBv zL;DxTq5V=YZ8hye@E_Cu(2Js7kCaW18eh1)V-Ag>y?p8mpj`;Y zrF|LRat-aCpnixxla$7LTjJAN;?rB=Gm?12#`+NCUS`;aY@y0YIUAL^D{=eLhE*DGMXxs!j}-(dg}TYQs3lp z>bsBnn%4#i{({c!)j5sqGYO(86lD*0G5U#`@78lCk$%IN`h#_PTDGZ2MBDpoO*-8> zE$v-xMzE~7F!Sw9&lssEbQJ9!vaP5mUG=2K!5XS^oHU1k*zY*mTmwELZOgD{p@Gf` z@LttulkD|$jncFt8oQ*Ls&29Q?ND&MdVCxyjcIQ;7FI^1s&i|Zj7Epn@XBx8x_$~e zv68o;Y9>(K7EMl8RK%ZSaEzVbo7Pc5vT|x#U1SH=z1Ve>v&_>r{vhk}tz5WiEWOaR z;ufmhilv)mfModRk<%g~vhuUF-gqlGv5#lWPA|AI zbYp{mc|F*~zp-OzS`)vKsw3S~iV`!Xl?$BoZYSq!kFJXpXx*5MrYl~mgU4m{- zVUOikL#dge>eO|UQp<*vk=(3Q~bgz)EL;hHg3Ul{KBfFjU{h#o9Eq(oJ{uE zm5RMH{^nHDwEv{AI@*>2G`VeS@~*PH$;wqCD>u_@iVxss%8PIq%@H&agly!NqPc)m zb)C7HR-Ca}HfP-7-FobR4ECtwqnPI!9zS-8!_Ho_~D{UeoiU z4n41%>3IbPr02JH3A#n|xKzjL`IdRnIFu?MM@pu2j1=_z4q$?5J90A}djMm$J*6wr zFn-iWa?m&_ul7?qwDD}n9s?*#<9XsvDL(Dp%kbq9rQA!k*y=M=V?~dfS}?i!rs+9_ zOm}w2JIb&;n_V;C2HW!!nCQj*^E8gZ+e+wJXKjJdbKcaR&-@4N@z4FgX-~^Ya!q;-$lXZYQj?N>-HkT= zSsgR!ytHH7o8^Gc6Uca&NT0^s9xdYcf(pN6yuy!+t$FeJEj4R=z37@%xV2`D;UCeD zwLDjfI@{%?GA1y=-HXl=b>;);aQL>5bu)!$P6(*t@;pODWwdUd<&Wg)9Vtx@* zHOT~*8y!JBh?qC&ibmatdr~*2sx}_BWqRtZw2?K6jlF@Fk7?tmK)Eh%Y2%Y5XR3c} z8^;jYB9*n{FHFmu%fmG=_l+E{o1&&Ra;%=%fqMv7BzLc%HtP zcTrmWdHbR_p5NLTjmn+wNh{Cn1M3Xhr*`Uj*o*Iv`!hn_#GY1_v@_oyj?mT)IV#>_ zOOtstp;dkv*&9+1&r;9{N;W=@zc>Zu>zyI9w@KaB9wKAbJ7c9Nt5p1XQFZo?t#kWJ za&?X)5l-@4pPc{V+u6$B_vNeILQ_o^4o>RLv(Gi96>WEIYg%)IzvE!oXZxmuEL4aW zAh1081!v;R#q7!3ks6f)?2pjh^c6YNWk+g{-wgq78qO)Zbh%*i&AUiuMCPzG@7ekn zD4Lzm`EjB55^}a}hNbms$BKHo{Lu(-j{_RRohR&B$t10bNY~%X$JS+Mj-*^q8~qFF z+H#{EzI`@>&s27b?1DAVi%jxA9&IcD!dBXT`Ml^j&!(WoO=xS8@n{s@CK}hSeLflu zDGMCEAJ4&EF>jQVjd#4(H>371%J;8N&U-R>NSCd{t8sdHyY{GPuE@P>JMXrb zY&F+0ILXBa_H{@H_jKs2QDLooY4WZ}LvtA=np}*CbfWK}>6}iXiGKDjU4gx0VCT^Q z=gkKl?^~Eqm{8R6MaMWmjh!)7^nL+dnhP8qhQXn>;I5pHrl$AYgkPjBX05{!0mi=} zp|As52ROFGIIE5bYs7klVXd&o@4t?}zd7RqZBTBU% z>D)|jl*a81nZ!;^@Ygt*NKCOYW09wtHWu?dTs965e>t{~RMdE=K!b-z(@y5~7THoB zYbT9tW@C$**@7f3)X6w}Ur%bp@f82I(;v}t(Y%afg>`SPV9zVIvY$AAfzksBmKHKk zYR0k!GEF86`X-+DW|R4YL{p%>^qKzB(2e#79?qF`TC@<&*8iQ_2vzveA|kbG3D#cC zC7y&-v7VMD3*W->AiJ}5-HfwwQLJ<>n09@`PvfKh0ymn!8 z?r9@f)-LzTEVn=guZ=Y4o<72y<8r?=%Po+>Yd1INo-uM>n)}Esw?GE3y|p>_@ad!^ zHbO9bsv?D9UQH_ay!d^l?*5Rn6yv>U=J06*6T1~JrS}&2#PKtvYLh2r(~|9)ZZl&!T%z5y96Dho%sF3#tY|40 z)RHPGx$^Nb)HQgX5tn+eS}8eaD4`_xK|F`q(V|^yIb!hTXPZZ-mmGnamwrgBOLl}h zJ9H}idFzYd&jTq{FN!~SP&mp*osn@z`+$QN$)f(Nnpwo#@Tha4Pgo@TtI=PTFk?}e zu_#^k=U8-nCUF;l3W;OUXQye|eJ_7VU~F~#MCE=m@6DZDyat8Y8Zjp%&oFpaq%}Nq z`6{{_jiwx7%qy(PhZV!zYlW%pe=Tit3kl|?#yRY%yT(MOWXHjq9H+$^k05a8<%)6k zK4AVP`=OIsN?Nc2Y%>sydRg1 zeeN~Jl8#m0`$9`^^Hfntj|hTS)zPWr8&5E z7DJTHVq~A_ZR(j$ZJ$0rl9vK$a|r!b!afP#Nh6*}q=o)f6dIN7M z^uEv0yVy<}3Wk-Z{+x7UK_6!jZm*4jp<0^h5d;n)Y-YnB$DKpJk)#gXDbF z_#*NS$7*|F_+s5MKT)lG9UqtudpBrikCxNy_!2U#52w{4OPQW%xX`{gJq)L`XCw4} zMjh{$+zbhC5YwGy`%+2}mmt_ZsVh2;)f9aLMy9Wh+affG-%2BEds1^w zDlqE80S-s+%wgd%bP(T3X8XoXV&!#~1~?j3)w`GOR1+`VCFShxQVw$$16CcrBM+W9^W&`s2wE38G6$;rz7AbSp-e>xRGK3cDAhE4kAjLqobt zA6WpvRVly%0ESb51pths01E)PIt5tZ)|3MKx|c1uhesGBdISPkUo*I!A(@D0jSf0cr-w%}_Nyivj4;ny1ENy-kdQ_u~^`b0!5x(Ps^KXNlS zvw&VlpneONQGpB|T?xnIAufGtw5rlw_2{ljbQfyfZ%gi~6$f7Q2JU_xX$+$`672IE zK;$h0p5aHgE2rVD?+K`oD8%IFGtcxeV>KeuU&z{Rknc zQh=VS)&sRXA%^a&-$6xK@4dsKU3Pp=E@a$8*SK?GKWMr}JP;SF(L65t*vITr`#YB~ z&S`)WLpwTJnt=~L^sd6-V}^WO-#<}mj6iCoV{MfL+9!vU5=gg0!ZMe}!HuYM7Z;z2 zGj@m{>iAv%Ax(`pauJ`b3lg6EsFAQTNvMCX0kgA=zl;2QNMr6e##KUid^h+xEO7?= zkr8u!-s0m7vXVPq>t$r@BV|1)gHK=~6*l!eLaUw8khF(^B^zc2?-sv{V3)(tp2tv( z7-0@WaZ}GXa~Rah_}#(~f+5uC043dHJun*({3WD6SKk%$V)CkUy#x{M2$7xx^8lA(8Z8O zpQ1`m{r)t!-kZqH7aDN_v`3?o?#}?_1Y%LwKjQ8f4x+MtFPHeUxpY4F;Tq#60XBFR z_^!*4?rvJ{&)FZ@F8g6N`Jz60qV=JE9ljakN|-V3eN9)x+xw;vpa_&$gqoXuSOIRc%f`19Nb zCIqGU3k2+AACuYwo|_KcMt$-90M{{MW}@Sw$Du@xQ%Vs37fFJu`TaV>vBabme^+^I zZrc$WJ|?-^%jULVSm~}XGuu+lY!84UVvexyUwx6tuuvx`KkYtpH89WJ&3uU%b|D|# zh^y$b!BWA#XT=jtee^@?i`CTmami0mjD7(nHe;e*lzm`IXkYPTo5&Bu6&%GJ_HM_d zc2)V%+ru!klf`+d7(GSNJjeFZ$x>ECH7SfdOj`QEl1q65)npL zBEnPT0MY#=h2Nxfgke%0c>~gCy6abTUj19ZM+GuC201z2nCAGkay+UW0vSBIo*XO+ zUMYc=JUV`SM)gOUYYNh>Vf<}MbyX*|$KN5)Sz;(&CRs@Y?$>#N(;`K_MV~hxXU%u= zmU3vJ8yC^l^U(oj+ynEG;#;@qNBn=#f>G=l&G~W%IcJ~=L+5Ue5&KH$Y+Axc=^ma}mDEP&qr8*EYGTdmGNG>S~+mdDsRb{6Ph*~f-=M=$pDuV_6d zH|ywHsz8Ska=Ed=PR_HVPJc*Eh<`$G5QV}g`Tj<*3QYw6PS8G93(X53cKsIW z9VhQT$;n3aTe+vRx}QHJ#HINA)G@dqDBal=x)1O8?fRrPSj@Q*#!pBiPDr!=fb7+B zi7)t+;LF0#hDB?Db88fOFi>Xm4a?%VZjB;t4cu52QTAhfr`q|^KPS56uR$GH7g_U) z_|Xw?_tC)6ye*v@Q5@RDjbhEdn-qH6M^0{Q&Bcp%<`8I-ygd=TE*j+IZtQ0V8%z1d zRC<@>AsrNV`9s}|?I8jEp)P{%tERaX&>V)M<9lG|OMPDLJHX~Be^`ZC7-=RRR%vEq zp^BaZz{fTH&~Qc`Ew^+n(higoX<4LgafWt!eF=STbM%jqyljqEZCg7>*PfbhvI5c9VJWg7cso<)7ie!F6B=WW&n$&fq(=R#7%27~CY6aXrQP@AQoXJ* z)9_qOxWPOZt^)f6u)G!@=kfP?ZEZ0Whe6YN=emI58hfWv|NY=8*lg~)#(gL^!kA^g z9NfRC;mB#arP?l3QSB_cu2cKmX*jh5fTPQVy><#=+v1YbKz;HLy`O|kDmMBfvQ6X1 zxC~=hC5u6K)Sh#e40P6hPm$!a<-sskmn~0}+u6cC>>aWwc90fy7bH=$l#}oiF6q)F zioWL)disc+6=cbxf|?r&Hn0B|yl`o@RE*!K429mCeo7YXT77)+)%1#V2~)<@_L$|Y z)-1vn#y?f=WZL+7e%eqK$-J?%H}?=X{#54yz*Xn}MHOydn&!>j^FP4L;1; zF4AyHmCB{b6lHr>qwOi+yWm`vWlDOFMw>h$769jI`|UZe%|x%RX*Sn}@Nsya%mqwiuY`_%Xqq?OnwuSWcuQh-X6$LSQ0N zbRyzMa{x{#k{={YV9G+=9lWhR=7Ffbdh0~TkL=sGCO-vzE0Rg#EMz1$`7+&l9`t-k z^wgh1C^HzN>rH_9}*lej{%u<2piU}Ib1!MZpXnW%+(_=g% z$~|Su`1mca`giv%=p4V!f}%Xk+O^TkES^&z!6C@jSK(g|YuUY_Z(whKNO^SGp4Ry_mUtcEMvOu;teWWKQqD!6m!-oO7ZLv5iu58?Z)2 z&3j%a^2pG&pVRh9iDTUiki=HFSYoJ{AZftcW0S$1gZyma>R=sK)=H^tdS+wTw=wA3 z==Jos%~DlMym=>i0X98k6F$`oSkJVjGt3#AF^Di^4tsUZklEh9FhW)6$;O2di#i#y zninh7@D25&gYwREpoNgj$4Y9Pe1bOTW9>3dK0%xFu}~Z*pP-F=eG^j(7W!H_mh10A zY?-9$XX?I?&k7)3^|KP-4SC?J957m`yV_Uq=F+~0)IKfqV$_Z*LZU# zdYN)#09%H@MVS*>{ku8Q0>XuqdJh|})f8di2p6BoeHDxjqf>y{98m4A9sU~aJ5e2Y z2mR=HCEWzs_z9J*b`k0Jq|6znVRSQzEt{4~`BCWCS(BD=uEnef%L64pW+A6<4QU+h z0$q<7U8-mVw}JCToKCFHvaviWkinzZQ4yYoTez7}%eKZ3;eAu(*#z@?66*h;OmwSq zW^H@~ieFe8-*n?vw9!3`Z`uBpzS3e%hBnc7V@hN2|CX@iVRz~I2}?)da%Ql9ieb0G zFnd6!K0*AvZ^6?#Gci+oFw8?2tSEI53%^Z7tY@r0TyLzzbukNdBrjGqh*ogzztP^d zP`{k2zGN*~j^02*v|JaaK@BI9^S!t~sy>WaVcO>k%eKxb*S3Fc`bLrb-FgwzExJn6 z+^49LPgtTb_9ADBZwmM}2w(3_-HoAQqpsnFZ=))7IvzFiJt`_|(&9$fSRdrU)RAmf z=G#3KX!1dxlus3!t@c5F8(M?4zi;+I3V&#|H2WZhIW#iI_d#BDa%E-aYIN>Qp&Hi* zDO{Nk676)hY`XxU%=&skfsr6CD%W=O7jNabSabnBDsi!If+^j6OpH43JG6!Uf^`5aSMFk^@Myg}Dv-gWH<80=knZ`a8i4NUA`iOfL5voWH-aO?VYoyXOydY-aFcM? z3eGPu>D++-txY1#iCzsPco!U!T82cR5naYZf)~W?d;rNvLJ0%q%@EueT1mx+=Es(8 zM9mkuW4t0fZB*Ob*yO85-D-0Jj3+390(d#3O5#}=ySc&w>Adq@jh~1ou$p&pUTEIw zY7C}JRhW6lGO#;AQ5(yeXTE1;hk&7jRhD^X4WlEBt_GIQGY78IJR_Vo&#YC_owSB| zM%l*BGY6Bn<#}e3nkGL((bfjvH#&sao_BOscQ4uVj%3GOTp_!;LDSu_FE^5~Rgwo| zPMIekvHnuiN382fU2bjALpMc#3F(&5G)7ac93A2e0VA>>0;Ts6Nv# z%HO14{+Uk|maWz=KcJ3a?O&Vqi|~g=RkMB(=Fq4dU%$L=yMd=$^ovl9t6zjG(=UsC z_cg)#RG|9K;5JG%lYo~MEt1#;Jk97)9?eB-;1OOhWKsP%@_?kN!ce)ESiP5AqXHQ` z!p^LYd@;>&opMZ54uK3FVSQFd9!zswuN>2rLm-1k3~$*OE4i6YW9_7~2&f+)rEH2s zo~PXOLgjgkO);K4Z*l52k?Z%Pw?m1v@1>3@aN}+ut77lzloVlJ5tkbe?UN}X zDf6!J%Am@X?4&e_n2M8LUk8a&&A7L;(H<|54&Q0u=NZu(mBrbn7sKav_+Yyw%{|m| z;!C=N@*{=Zc662=PB-R?wY&}Pa0Sur)YZHi!0Dv1UC+ zRq@Sy9j=u94B#7pFN)gdy$1%IUoGAaWX@Z5wMnSFZGH>1vliZ*KIU>e9(qg3F*L25 zd9yg9ePstq0QogHFr9uib+ zYOiEwF{GUL>j@u=`bN3o^?642Zt(TxiH`8jHXo#P>g!UYdUG{QOE+Mqs~M|mMs2rS z7}VM0mgp`qizy9XinAarfPzw^q@a>^pU?frrbFLG2?oM@Nw05D&qePe6uqBIGABnL za7CL~vW#lO=pB?b+rjBb76dt_Brh}g^?4Gm{PJc8Rr5iIHIe!2q36G$r;dNacIx6j zXMH2$cshzjxh|4p6JkgBjPl-WBGj?{)qUQhLPJoe=XPj_A=r#kXv z1_bh&?7WFSOs?Uti}lQx_-V^{o`)14!6)Lh)rW)Kw;0iW>}++p*k# zE2gM0&_y35TOId#Il{wMZB*v>-`^-@Q-dF0%gE#76)kZ0z2u%eQao&%L3&EAbZ@jL zEsb7E=6qq?W}7LTb~g_*a7;5t_sF-3b%ik~J+mwQ{kZyj6&_8kXO*5bl?Cl;`8mgJ zYKpk#5D!dFE9eD5JYOu+9-Op}CsfA?Ngc}4sN=*f)ZsesTS@0Vly=_7vd$A|L>Je2 zIRC2gdbhLgsj!P;%IV=5@E;ICBR-oP}SnXwMl%v_jfS_=zi z)Lwa;Q<}TO5%+vy3}Zg;7$cgnN%DQf!;1WYgef`i0B7U%1s!`4DQBZ@-1%c_xj&VI zwbZdgLk?8Zxqn-yw~22UkFAOL7-=Rnt;Md%in*t`X>W{2)B`!07`N?9psuMaeggKa z?PuL^dwAMu!lu3XBMY1)A5?{lGN zBYoi-VqbMlrosU}ss0ixvp3h)0r(@x%YR>Z;q8g}kO6qc_)p+{=uqz@7tnVQu5{5Sf!K<3tcIqv@MPx9^*p+H7tF8wT0w zUe@LrwY$kECAkmS7=rt9Ywe|PsnxViZCu?fBm0qEdQo@RBX%{>Z|#=*s3{XpGy?-u z#To;1`8aiN$klzu*t*@=9Oy{Cx;TJZ9FLT7)ME7J@y4%TACHLdI3mW;L8>f>#*D*J zkY`Ozo0%Vnc-Z))>{(qT`Km`&)x#A2cbJHFq@W_>9My zj?W6WbSEz-6!P=jW2(Is_+tT2XjTKf!DHY=?y&p3pO`K%cEkrjCzEqF(2@r(x$%&` z1Y3I!+Do;g?o0-R>lX$@!On{py43EpF&4&}=bVjXJjf6|42n|i-_3}4#!=wyCs!(c zy?uN!dP2=?(SRErKbke50o`~zajeX5cH|%TmS(-zq62Jpw&tei3^-w*QTq%9^$Gct z@$R`-vCU8T9_oG)o(F4`!1kgmBo+t4o!&*$YmZVWjF05eMf$02TY>c3u4LXY{VnO4 z%O+QL-TokhQ754zd8@#1t^g-5Tg+h_*g*ulO7Yi}T53;G$M(hr$vZ>B;E$SLu`DG! zmz}@yJa6C)?iqS&qNaYw!tlcwiYU2Xi0LfO9wBPGbSz-{?Pl7HpNl!?H)O(IR+0Z7 zoRc8G?UB&-Q={$Y&=wyIr|6VJxNTg@zI}B?mx*xdv)$>fsTx8`+wGw=qS|h6ji;iT zJKtdHRBvgS&QV?GZN9E!(z@D{7fIXGclcBNl-7T5zW&A%=y_;3#?j#XP(P!+I%6Sg zF_l}3i(T!>Q46*QMLVLW_IO2=T^Riq{`fIVrLg~$k#Et1gXQRVz(y4|fSb?UyDm>r zNA!%ko9(%^UEY?x3ZT{F9zycz5uT&+&N{3f!TaY{kiVxy{V+hI0vSB|lon?4%?`r9 zpM$r4xb;$P%3WanA4C5IoHtp0`SS+uO>W7c=|-uwYOalw(AjgJ>IUT*!3!| zJ>C-&zcw-S-Zg1y_YCjpN#C6mdY`VS>}RHkw%=`|+V|~My{meccF*=+-7EO?X==q4 z(-gjWn(}|u!aoB(o1;RmrPRA;O`I^p+hyDDPTJl(YujVD4ZZ8<3foH;PlWPMEEdfV z?4h!M+WUulhhBM^YT3@N%j|lxU2k7@>9WxKxP>3K>o4uvwvY19uwAgH`))xrW{`hb--0=zaQ-i4zuj3l5z)VYYYKVb^xQ*89-m z;>Od5tHv9T7&&6T_vRy1%h&C?$4a$y#mc4Ki@jx)n^rFNzPwV`pV;*mc74XKf8qL0 z??X6mLa*(}rQLnr@*}U?XM69|Bahv-?ES=g{C7uQx@?9w<0xHE;Tn239CdB?_TE2_ z`t?zJc}tE~srYF1!mEzHblLXaw~xN}=w;qZj=6N%GVdU+%e`lh`TjA>ynkA_eC+p+ zS?*Qsx{T|5@3LcGact-OpMuD0u)T;bBH zN8!er)z@~f@cK{K=7jm)tYcO7kP~!0%dTtey8lTUUvp2@_}bO3M{(6y)+pCi|0c1| zYylcd;cH0P*J8dG==>VK8K#wAk@M&Ra$axYqIZaQ4Y9jS_db5bBzDtRD@am^V=c_Djj`x(My~F>grTxm%zD}%2&ZogS$@_uDw)g&Q zX}`AEJn!#t&-4E3cc7Pd^!{!2?GSVXMPhAGGRfQ5Vtwq+yap_*lUOH-lf2WD7+RaW z7ZdBI*LJjWBbK(1m^jB1CVFVGx1ddJcr$6*;kLLSoze{4*Sgfrm%9eZATWneqyV+v9 zCb8FB?2sgOyU}u5QLSC>z17mLD!!?>J+bu``zW!Zx4-uRi+!0`AHJ~9S?tN8#=`;L z{cS|OKZB*4=QCfnw6;)bM<_^;z1nNo;pw|I7OaKee=%67$-Q^L}Nq z3y8H7`>n;Uv2w?Gf3Vn{#HO_!@BPzapCi`KSbWZ6j}V(rtmvz!pRjVrdpjeule}k$ zMQtZ|yIQPRQtU);4~xyP*h$_?EVkHUCwu$)lELGN>6y+UzBI%6CCSEddo_!FkJyoIYZ+^j)@Mr^acjNHtoEQ? zqj9Zwxy1&O*pQVwHi?Z`xyy*D+%=YVLy~r_rQL36mwT@S*Cg-#xS5OI<=#5O`8mru z?7hiyK4m$t_U^Q_KU&(=-rFs$)S()#_ug+c>_DtY?4!O9&gC7#`8scdBa6MqVz+sZTkL*|y}|pbPj`Bc5$oow1HZAfKUvxx z#MGOeWzlj6cAjwdTkI~6&4$DdPGbKy%3e-P=djT!q+MZYZ});goWI@D?)FL+`(zU9 z3WW0^%XzogZLy6>?Eho#OyHxavVVVT>vU&dI(vXDorNTXKo&w+CXfVK!V(P-AYg#V zqM(2%Mp4ryq9~3;5kXLc1Ox>HWEYqqK|xSaaYrXeMA0ZZAa1DdoZqc<8l&@f=DqiM zkIyGR&i9;i&%Jf4x~jXny2@YUJ<)k0AMun3N6hfzu{>>3f=N+`<%6CR^!c7@mV&kj zIx9vr1@yegMdr<*?V>N}VUzl4yjNW7#jn)uq5u@BN*V?_=ylACV^^WwX`=o_C7>S= z+a)H0yu6Qj4W{G4O`upJLmU(fKs|`A6fcX1K?4wbS*!$&2OXyUD9_8a-gkPBrE6EW zf|d|XAld_3M>L7(7?$q^Z{9B*6-|hp^yXKQ#%#VdXsC+P2 zX%c~;YM6%siA{q1sefWuqJ5q+5LM=Y0+hj^hw1dAA%c_<$Sjz^6s(K_$sR(KQjnbaP-Uzh zBb>g9Qe0K<8?1B_Px)1A-NYvU4my2S4N#N-ky}_86(ANCmXaPWe2aA30QP(dz4r>X z50Y9e2|-hgQB`R{(@AqkW5jzwCp;AKaZoVr?!F6p&m%zW3hrqQ5Z4ac9>e-6>ES}w zPD4J8X{|6j^keI&s#~Geq%q==(9fvVf}+qk?ss$?jX7+XO%W@@Mw3Q{2P-imJA5A5 zRpCc%T(dALMpz?kp2bz^5gg5p$n=a6MG-lqr4fDT7wT7&UlCIx`jI`0G(g-DQ9$+r z($>D2-1`i)jdbqGWK1PH@JxZ;HMRB#sQE!v|T-1A% zxwAun7w2D_!1=c)6j$BYaf(q~bvr4~DlhfI!n2*Tg{70ztGH@&z!Zb$JehtSJ0f7d zPwN;?MBnc-s_Fyir_ggyEr$I*&=^u~^_id?wDQ^{1 z(z(J-kz8R4T{|^Af#-G_X^dEyu$?aDehYSd{A>O(A}R4b(yob|^J!uteXGpdEuG{^ zVvS2;f3KvYHXbeK%ghm-IrI9?99;z6(z%2@Z<5A{XOlOO?n&N3dN{d({O=~eLiV}j z*UA1Rxu0iJfb?a7oM~io zW_)JrT7E43m4H!It4L#L3p`7$PN#oOzd9`H7D&GoTiT6heoMF4Df&S-uJcW|M6%<$ zbN#t-iqcwVLHApOMpdnVZh-D2r8#N0ydwg5TeT#yw#^dtf*FYGzAh+61Y~R^P0VZ-p9CwSH2XY7uO0MH z@_#wtpFQRF!_lds-Nakjw}b|WkF%>uuN`za*CJ0Cq4 zV5L>h_h5TS!A+4CF>}D%o)$6kila6Qt-G$BTK&=9A@QW4J-I?*(Gr%!&*Pw!qd*-X1vLmc_b7u!cP0TVW+Hbz%DH>dKkK!dh2i1yHzeg2skrOL>5A<6_ z=N0l?v`+CALtXTo;wMJBXb&CZC%NcFg|LMv5aYDpI4w8!jqSJBW{6G)3(w z&bVl<+DV*u(H&~E_}N8^R65?qwa(H~HCFh$s9uc|9bB|Yb%=Nu?N#GNcNe{+CWu@Y zolp}+e;0kICW+xLI<0mVqg`~4ev5y#i@sM=#0(b+EtR(I){$AYF2d=e04+@{bWu2+ z9a(PDRKHj)U2Jwy7cEl+J7kq=zrk8hk?NwcS|7nrnCIS(6D-v}s`dAw#auQ{% z!vDN>rPvOt6}R|b(n`cJGq%`Y)kli@B$>Iw-%}qgiaSf%{7YQF&1Em{R~gRV zo$$YxjEnyB^qHas?anAn*NYtf`UtQ7YW)V0C&~JYzn5}@7znDd(k*3)N@Pp~2i&92 z5)CFr5zP@DQ&2@D1U#(I6?rbI({C2LOzKLpN-;83X7&x(q~9jWU365ZuXgaS(WfAw zMR$sK5v!s7QZ-SNnORBwIYkYBDMjC~IEku-BTdpGqPxW5i7dN*yex>`a-eG zMZf9yi55_e*caeqJRn;5OB>-7Zv{jfwW5wMC!`+!74VzBM2zSz>1V3)sHkw!Z~8JZ zH$%oe1Ao(3h|Ek$QGpNZPl%!{rdp8|m}b<8b)W^JkTRbVu{~tw(7+4&8Zp8}zv*km zj2sy&3%o~PFXowa1JSeMUXW8%2lg>GidXRs*#hwZ#WsugOj=E}Rp@+)KP}N7%G@TV z^^!GTrrvjoq~4O=B-$g6o76H$h$&j<_C4Ld?$V|sWM=Ys>!LXx>B=1@{YSAprztXyJ0Ov z$bHs{%3+fhQM<{?2QIqLTA}=4(o-Q1S*IvDV|gsKVl&ZHr5?0Y>nUZ)%e)r!+0Tdgyd!*q6t+x<%Iu2yzEWZvqY`saj!K9Ug4_j|m(#+nKA&0H=ltQ#yAeM)I zYrRFOF{v)}2kWg$5}m1{l!rhItVcp^w%e2glCU;!Q>>s`F|#Nj?l$E< zllB!A$IW+bS=O*9+wCq23`?-xshmLO8HHnaDb1jl6pqy>^>hsf&r5t*hV34udpVQb zdhT;o=^2)1bCFMB*Z|x8tuddGVJ-UoO0KJ28O6qd&e%Bf0c8%zXBgUb7$1tK^69@}CiY@(ol3#@&^ zAF@59%mO*Z72zvw4=W#mYQ^yIt+q#$FHM>hzQ^{c@}q2r*5 zO^Us4Tdv$A$$EeIJGK?d4v^FOSop_8(?GRi%+S23l?u0_SGdo%@N>4uTgf;ae$k_i z-l5nNuGpFI?}-{+{RMbFseB1KW8*4y$^}UZx2sd4CUXyG6mD0i95ab~SfzX}3GJRz zzHy5^rTkzLS6Qvd82B@T zDEGVQqQ@F#9mq*D7~r{9X_7JP@`w?hPb*(Y5*s5%5nV88PsDi7b&7EfkHsk(Bc^yh zqvVxHdl*Nt=at@|S}~Pk+mw1URuehJbGzc0CTl(xS?Re`$u#NN$U8lED+MO)j=bCR z1*H^pMmZ2!t-qjrZpMy8-bb;+=2$iiJL%Y~)S5l0!;ScTivM)=EFPLj~0 zlC1lcuxn-Sx#7=w{zIANq8*+MN*%~auYiAe9#s6VlbPIKqf#yj+w~#kBF0iHqKEg0 zKcxI>Qr7T+@h>SB^j9lp4<8f%vT~!V-44&g%3?`YM^uY`R9OacT2rGgdK^_&nX$~M z0k&hxdNbBHY7)^_GxlAi&GxF&AW002dfoF?*ETYxrBCS z6sFgdsu>(RW8=)%&CEuhT{N;bIs$qJnezSa>&nNVrPg1gKJt8B`4m)Z_3v<+=qpM1 z$}y8#h)yW)nDiadJ4%yDKNG#Dd|{H(G0N)$ z<$_5D(Mjc3lRSw&R;+Wl_oc#*s7VPlDTL?~rGrV)M9oT)Nl8R!lnj%)5q+-oH7U1a zoYxo14K7OcYEc%O)Td()uWyydOe!Ec?^=J>uspBtTr{|2q1Q#F9+`Xu%Jce3*=!QW zepb?Mlyi1f$1A;lQ;JO*M8p@&ho&(963F=QKam_^4yRxnK6x9xrnJH=q zlQ=U~b+~1wtEq08>FNl#%x-F_TV|G8?v|OQUgwsXt={66nX6X0W#+2)yJhxLcerK# zP2KO7`8V~LTV|e`b1N?qeZKAVq*sAD%cSm|)_WDICruhabcIT%J&-w;Xpov}(hQ;@ zYKcj=ciQeXRK3}xhdb@}8m8V4l51?Z`Y=e&*>JVaB%ZSo>K?bu67@y5%o6puTjogh zCy-OD?R1!~4Dg)KBXf#O45#hD944pEJ|$fUkR_o&S#4I;Wv z&2v&BWsV_wKwW0iRHDV|1(R-#UhMs_dfi=|DL>yns?Gs%?~`ngs!xFy(Al&#-pkZy zKu$WF_AJph8KaSH^S2?15jCjxd$|f{j_`R=jRWyajPW_Brhs@RMi6Dn zm^c(Y(Wg;eXVR-gFR5V*#CeHz3ypCsDsYPZ$r zRdvLDvI@eBM%*+%IF9FdR36MdvEen7^qBx+K7 z|6S6Am^XY*t3Q}DmFSGR?LirvO>|bBwOCRmQHz>dE9owxbL!_NJwWs?wf-R)TNd+A zpYPOdCaosAs5Y9kk?4E%gh@Mzeo&iD>Kpw}pC8o=AfBaPe11~3hf$Me$;0<&)eFS4 z^o!5Ws$IrJWq`l$CAG#RC(*BJvq@Re9ejmGr$Ff+zm8ITHEo7TIYbuiHIQ7>Htjt# zwkdjuucsFEh-|lu$XlChQdV@SudnuvNoQjw`UGg@OJ(K-q9E-}kX+Nj+DS9EDf(L9 z5H0=D)|%J)hH3YjlodVCH$n?o#xc3<9keLW0{tO z-rDXN-*{~Vh_}{lz6n|>i0AAXq6!%ki=+4XCTb^4T0zuVD|k$fEGzmI-xO_|NjXGm zntg?g^(E@2)tEGhC{z2vq%lN2v}r44=2W6w?W9S`G4K2K(SCZoZJhlyI>Ai;c=>+v z?XL|qX%|s}R%cRHw1?jSt@D$u?Izg={WfZH_CYW@NV)L~XCQYZblws(zecOTK+TE$vPj}YCf z6+JEKX`=hJA51C?O!E7?He;QP?Wb6+)@0HpiY?Jf*UQ+O6nj+L0IC&dV@v!V(~g_5 z%78Mz$Fn3b!%pv?g}trHwJ+Y8#gAX)PTtTison1PRDY;SF|vbcxjJn z(I&k}v7=fkh+nt6{f=q(ZbKE(rz0I3wRPJi6%f6pbw*~b_+XSX?H#SVNx`F?Y42&h zOd3e^fmUEr3DHSys7dz_eXJecftu9cJAO^t$C9k0;#>4jv@?>#l=x=9PqgnqJhE^6 znl@tIsxLqfwW4wKl5|a9VbVuLx_%HfYlW?JZMvbqXHs-&dAdcPu@61a(pJ-h zVeXWKZ|6MpdrV46xai@bFE*)1LW^$Imzk7LF{@rLiGD+|(BGzS+uvGqslSi@4XDQY zD7Ev|e=unywe!{We;`vFOjzmfr{61y#yT%rM=j0acJ0q1!?Hs;br_^e7O2UWu|r=s7YIXP%?Q~zka#jL`ySp9o#kIEc>6It~+K9h7Z=>Of?sRoxi{2KyHu0iI z8{L#>1UOtZYZCKp4*e7K$4g`nh}ZpIl zy_*^1v83uf&Dh(C22p=A#v|*Z4>pNM)CMWJ@hqZEVc76qD^Lu$C9J(Fk^WX zqeolf-%CE{I+q5}6D>`mXZN|0J$Z&3B_`W!ZJ9liZ+44al{}xQS@wV}xu<@0BNsho z3r*o3rkYfd!adwz(&iNIVV+69q;QoxO&XNS{oP~I!>QcggP;ZCZ0aeZdXubOn0A|# z0D9A;exNT+8sFth%H*GY@jJQkT|{86?r+jmiuKaFnKZjgNMLV0*Q9w=rH@`<(%(VD zOj-jf1v$n3E@^>%^e4>Nn_a5)KKipJeGb}X((Eo7l=-rY@&fzn@49Gc;NSGmO!|d- z$kTr^$v^E&qM(=LGWe&7zV_k%xltqmNY-zsBxRb8R~9dt(F z*g$=y8x7K*bY)iSgY~CfbkSq5zRN9hh<*;_6n^P5J&SbjBix@;B&X9iwt6w>41MeM zRNyduGDv>wHB7$_#NTsmq}XDUiqdNXhwBFT`R;^FaFCFE~TCsM__Zbs(PsD1)+ham9 zuhuVsWPjy4U1&o8&Y-_Z`n4eXjy8R~*ERYglU^g5qOSru#fRyq1E=cGgJgfx^cP%o zK5&};o+Rs+={DQ7dXq^%rZ4xqRzGVJzf!N$zctCD+b@CF=|4%LBc&cRLr;2*N9Gja z-MoXY*Qc43)=dwZrSCOqQn!epIeN+KGV|tcu|YTK^(Hwfc8h)hB$xI!y%8j5_jdgY zkX(i;{a-G+=uxF-9_O0Wj*h8Ly%r?5f@*!UNxT)*=-+|lHh;Hki|iYa9CWwt@dj7n z9%2IS)g2&NbD>@alI`x-LqJY3tyIL`-&)0Ic;W!tA{X&drj7Wx(nh~@v$hcBa^)^)RMxP!{W>WlSV@&kd^8rrz0On@yU~y*TJ0-SHM?Lfk;KM6WUFMxv#9vq^V!pA)o9&pW}Ha*eIf^FeZr zJ+6-e$#K@{6E36qvK@|Ub$Sg*9@Xmf2h12B)mG_`$aYpfs;$zWFk^gFdrDtxw&SDP zQ~GmejOTN;z7teUXEG)cHJCA8NA>z)Gxm1kB%(LW7_YH4`uk>#-xsXWKQUvx{?_VW zm@$4|uvR~B#&~T$t!r;%CTx66eOmVdEwJ)2^=aL1#`u`JPA>sfi@n|N3|glzm6_s1 z_k}^v=!Z;d>HbjAM*SO*Q|K8hf;Q__?_jOan%)t#L%$%&8k(^$Xs3Qjk_b=CAX@pZ zTr0dS?a~|GYi;*o&~E*tB+)D5lb}6%=KC^}zbSk{zZ%4Atc>Uu&`Y8uBhPD}e#WG6 z8G}9c>&6GDX`Py3v+dUtL2@hDucw0KR?wjDl9^PqT0f{an3=p?AJpHMnRrk8lHTN& z`I7!QXsM{qI2-hm{;f%iiC)$(x#(QbVLkjq9?Md(jAF0o4i}vZI;!_Gsg7c=>P0R( z7xbDw-K4b?JFd@l(Yc^E^xD=;-|vIo(pQ-DY=*GEt*9hGs6cf37#0RGwL9KdXEGliSHpm|y6d&|j^1XY8%nU+9-iiX8V?_LsUHnY={9 z=$gnyP27%Yr~NCv_bHHdOXdOl*SgcBS3xgH5>1&eQ|w2R&V#}~K|4B*6;mt$<4^NHWuMc>nG`%asK+;Y1;{A|j?V7!FTKW$m5k2s zab8bG@3rE`akpk)&}W*ITy|^rcluV729^coT-48)G=}JVJztK~TAI~t|3M!j$7#Jj z>noxX8Kaqq3HVX3a?w}zpY+9&Xl;IP|5*<^O@pTQm^E47+kerUnwgy9!7M%aH@*B* z8B59ZB%+@%BDOOtELbr*f_QCqBI;(+(9DEj)hIEkJTpC5GaduUwW%AM&_k{89X}>V zH};y;d;BdqhVhg^ehfMOA&?(r@h(t|3QVt97HY_Qp5yl3SQZg%oI~e*GGBYJ}VQ?qo29TWVSmS08_rB8} zYuqg}>8$%x!Ewd|AU^B9(;jEk%NV_ipAB{xnP0Zn+#Q@?G=gfy(9Ac3I~$*wRGxV< zIN4Z=cC{jH!VT6G;{sxQJ?1aLsfK@xtny*HHKdDCY|?~mU!t`p-3U5u()mn|IlhwZ zoY}!d_nNeXD9v~k#A_@nq^qHP&6#qIbv3N0QY&tl@NUnp#@|d@FyT_qbmL}|))93x zj+(TWsJn3pHEV_U)$jJqFl?yFbCwX2X@r4zjirWU8L2MH3CT8AnUq7Zp2jX0<%HxK ziRa`pY>K`jq>s_tMOTLOHR?ff9rZJw1#y4nA^nU!W@c9Ol#u?$aTm=A$v2|Eku`HD zHo(Yq(VUPgjO`}<955whuyM>qb3%p~QQyjTo`F+Bh8gKDniDeIs5a@DY-h-o#-lD; z6mpgEtc#Y1lo$;zdOBpZk?}8Cb2qgcYh2-?MIqyiaV}aOQfAC@(bFMU8;R$+om}=w zMj8m)XUHU@4~XY_U&v&m#6?F!DvaGGcW1vBQf(}EQA%iyvC&1RL+&;jU6d1guaWXSx0Ca7ztJ7U?``tD z?lgZLFbo+wks1fT7F*f?$y zpWl7N=>4M{HJ|%^)Mx<7v%SlWOQ5A2R-dL6X?o?^O5-V}5*F z>~Z6+1b4bmk{F#|AMv=+A+as?gb^=EEXn^Q;t6AZQd{gvqehY#Ur-y1rrv1g1OW~^k0h<(N=8Q<3KS))vn_-V+CvCkT_ObRJ_F?NG|e2sYx z)<(mBg6yG$VjB%Hv8~D`!zxL1rz?av8FVuY`X{%+=M1|fI!kqZ+;hg}YuaL)ja`z& z>|qBSn~j?3ZLuxJB1z)m;XC5D7**G{#kLyvN)ksYw$(WA7JJ_K*^GTbvFDA78Ex&h z88ak_m=U=N+l;cA96O~Pp{;ehk$!`u-$pD;*lz4HiDNsA8ME7BJB*Z@ndI{AG%_TK zyGI)FJB{u0+G4wmeUd14eey2j8n^EXb{jJ#(Y#dayNyl_ZS8g&iIT*)()w<@jfF3^ z#r7Drl5i$tk5PG~E%t)plq9|@y(Z%Y5if zAbGZ8ztQ_Bx09bD_Zu}P@u$dt7_Wfjvj4+)Q<8Xi%x4+@FqGr1{n59NhD{R2*etQ6)+IJmw!+2aH^NdXY6>H2O;tL&m*kf6>TreL~q2d(app$+~@hl~c3_>=Gqm?jNn*@|6+Mp_R{0(b`_@+se@Wuq2|q=? zVoY?49W|z#v2Q5G_jaUvw)wL1FI82MM0>l-ZRzRPgZ=J06dreVkN$hRv|TlsKmJer z|GwIP7v<$u#7y*fEA(#YH{IC31h$-$^*#LQ=0sOV&@FDn_RIW&?r9g--QQnFlih!La=29hsY3T9U^||UkqT`C{{AYKNHdq{ zuXv(!e&6b^c;dQqk5W@H5~;nZ8s8~}N41^i|Br2M+yAnD-7`5FAOHJNUG8zu|0_1v z9FB3$kNbV)^;ipB|MIm{in*Oas?i-zxWb&v#{BPUUY_YbLT=SoS)n_q{C+(1(bwgE z_X_SdSG)bPQMpImZO**^vP|~Ww(~sI&a=Ip=MZM*DETj+vCEg5>$h*)-jh?vnfE{& zNmcO@>_~dIMfd7yr*gk>`TTI^TkXdAXKS{7+fT4W7fAo-ZSSwF2iYeraoTKc&`8Rq*SswJ$yvt70QTe0Tq0@@wL4L{DR#^5-E%@Mok}ZOd2aelP6*0a5m=;y2iVgV`@t z=E&{AGnco2w&{*o`K%umv7S!nw(?jb?FHDX-97Gh`zY@R=t+&3^Qv&J8I;R4EYW84`~QQz9pl-9@ksk0WNYFOZN0j9m6YzW zi0CKC{I;Flw(Kh1TZv!4q8GOf=*3I@@1ya^ao2yJFQaMHirz7ja$l{zsCb2HqC0tX z(?0}J`Py8L*XduW&pH43vhb1Ok6IPGMkr_Fk8=KRj;d{b{?oOS8_#W7RWS}r@mFk_ zDfNG6xvu#O^L7+_dv{$B!K1yN+G=7xwnN^-w05ty|v_Gc*pYbf9`BBBg zG(VTW<851CfAnsx{RrE?kGkCB{tnRH=IyF|wg1lZXUkHD?Wc~G@$&bLfBu=S^_9Y} zQ}@xj+kZUre?M=R&k0x9fKl=GdHMYRcQf$+wpH6+LhdUr*VdVFpF?;1kLR=f61AVh z|70Dx_vmi7_TKhBpKW{p$$av>$>nN4hQBiM_Bnr6 z?ayAtf2H4@?Oyx;o#*9tb=rIW%6R_Y=Ctp;3y9rmZ)RZMft2 zM=STwZsBGQ*9mV|p)Gp(x=U-9$@iyH%rj>4yqUYU?n^nRKYEm(h27VS{H8!=4ry0k zZYMHlG%Co?r+;R1^xuD4=QC`aBWucP?&F+X2tBhO???KZA$45is@x1Hx~J^Ly>?yo!d z3huVt2Kd}8@4No$(Wf<^TS;50dymp1=SPlH+N|njt=uczNORKmzJ=?zf9KPB-28p! zK9!TDJ{pyX#J5wm;7=zyF?X?SIbaweUw{`?JyhwfqDBN9W{!UW&^{`wI0g&ps*QkL}Cf|Fq>? z?r&QQe{HGT_PT#`c2ORoHu>|mborL)zCF9!oOuQIV@s}P`{jPTT(6PR(;sj=mEUMc z`@sS1XKnpX=a0{sD?*-wb^os9rXk!`R&&>W_^v@_-h=b@&*HqjyUH{9Yl^voRQcWO z-jVE)??7Y)S(!bm`7MB)F_|MrCBJEE+wZC7KCo?XrV5YoTv>YLE4TIa$WP%46us%0 zdu1YAbfiBUJ^!zQ{yNg1jdU(ONpG%*p-7@wCQ`&YkxGAE=r4`_y3$`a`s+@A8T6M) ze_8aGO@BS;FNgkm(%)!$T3spqjiG+ViD}Askt-$;my7wzBzi*JHDa+ch5n|}-!##e zp1Eri(<%2l`kP6A*Hi8+`kPJpH;TQ=&E%U$Pjj0`e2X}&REj0yHuBATC$BA_|L>!5JR`nSHqc*yI6?R3tW@|aOeg6@kA=`$=yK>P=z8cD=x*o% z=n?1}(D$LINSFJaC0!l*Bk41tipuqE&;V%*_ME`8drs1O@6xc7^vO$6nngvPp|l{{ z0uMd=h@vgH!gCP$=Y?G$UE_a=o`~^yn66ahc`26!U%BZ`ea#EAlUD0?g`;+bukZ9m zPERGkKET$KuA#Hpx(U9=V-#i5J)WVd+}6k>^|kbdr-1ZE?;_Gkwi41TpEB4LuxG%Y z3wu878rX|qFM+)hc0KG3u(!e9OKK>CFb|Dn&kLI_{?>18_z8ud#&Qy)Z6tj$d<^AW z^q5XMFYFC*uHV<;vsGJ4u+mJes&z$)?%$#}EBq9XN;R*)cZ5@&+&?N}qB@iOwd&*j z4YIbZ^5ZvM=O7Sy?b$`?$VuVlT15pw+( zBXpIYGvbYrdz&_2(Q3yCE7dLeBGM)r@_PjwQJeC^B4?{D`O%SYU@0oqi~iY>mFn5N z{*k?Ds~Z*>r3To&l=sbOr-J^}Hol;X)uHlpOj1>zflTz(Tb)_prDVcCTfM2^>Bvl# zua-TfK2WeRvH&?})%68OBG0Oy7Q9ZL9}DIg1!``%p?KqYI^KeR(eEwzj_O=tl(mFf zaWo;IPM@x*g+E1l)3aKS>SgG+0?|q}sF24TR@f=Zjweakao_bB6rC4VsctTuNq&B| zlwI&0*yqAOUv)%z(Hi+MeLwj((|zyl^o*Fd$maX9*C5A^d*v(IL%w%<+Ht4+Mbz)t zQ8vvnz}lfwO&SnR+I2v32Rq&0hwhxO_8BnP!;bskFQE$6W& z-e&gVnJ}eerTXO+4K%9nuGrDh8?W&w=w6lYu&`IYC=Ly^XFQi9%NFp^X(dnV<~Gb+`k15ZVlX}pbqQf8~02hQ^g7yAb$$MBpK#;j5s2NuV4*8Vwg zV3+fEoggCS9-cePk=u&Vx=x&sMt)nobq62hEDH;TN8>)xLuU zd(2h`4XTalsqy_tW~(I`OJi(W>7dn=sl}|1siYnoI?Uy9hRs%M2XT%TGvBM9RvPkd zjG`PL)GJ`R_yqoM29-uk6!yVi$JDB^gKcytt|5cBTIZwfMDg6cJtyVwYg%YczgkO;=V7vDv08 z&klJixK=$xcCGprDUWk;>>#aa$lBO??b{)HVmDy@Zo{Z}zb7I$U|rYKHV_@R*YuYT z%8YA-U5`^A!22W?@pG5;~ooPQj$#w#3a3c9HdYnZ4W{vj%EvV2; z(LJ#z(MyZQN780gs8p{U8sn(I_$#zq=sND{@XyxjhmLSe*ESC=aa_PweF@91>%3*^ zI&YcNwHJoo<*?y*v=x|>O0;!qMZ=zU%vQ^WEu}R$b=VGvw=UP++1Qz$wc3ecrya}b z)p6Fbp2pLnZ=qHfJ$94M3)`Y)5BkPoM}Cx!SCh`Krc`(`p}nD%>Vo0-#}`n}>+wa% zDbo1}UZC?*7wEhOOLTq~RT<@1>t&|R*VGrlGe~L3k4qS&To~S>7t^ceqQ?=CF!v3trSKZImHxz%AFkjzU zY_rwqFBktp_Q%Cu${5Ax%8Fq;%EgH_`ZZS?N;pPXqjSv| zvWErK=uchQA*n`Re`O-+b5~|1b*7~*CVl@(;nh!%D!C`Ao^n=`I!Y8}4B4BL`st%e z_9Sh9e*^r}mGY94N!xTjrtF1I*XNh;z5gF5xtP?5F*jl)jTlKI#?Xk~8_|0sdf!4b zwx;tIQC~9HV~f}b-AQ^t`~!Lf`ZoLz`EH<0`UN@ZsgeVvx#6sXJJS8T#TUpq5B(Kt z8#&m+hAZ8V>AXKYhPBCio)0_o{(-h4b@E7ht?Chyo+m z?a2qkYa{oOHjg|;`W1~cT;;tMYm)VV_?0}Bs>dka!+4KcL^s+E81-4QQ$&oi*;Xoi zm(mMV*--ds9+7eh_6GQMqt!nk#T#}R{C3#8Me?Y*DctJzl-;7|sG5{0_zP%OtMvjL zl?rfFau`LU)~2K)T15V5y^F}dhLoScI8iAYwJRmljINCi@+qPUlWYa>L@B)Ik5YJ_ zUj$F3UXt-sij&59(W5t_y%F6aI^>^EEkVu}@y(#~bo;egqk44NBC1BQ-4j|g>e?<2 zv~r-;dV03t^Ig_c+nrs?&~`nw-ANvjaB$ALu3I#Ivc`1ntx+Y81L9%2C))w>6zNK; zQ?1vN&I?;<@E&-j!S4$ARdA|ny}_@+3iMuq-ZyZjQGqcGqR%_k`ZiS9Yw&X<_Zs{h z$-M^Ozib9t%|NRe$lq(c65rE*8|v>h_*s*C4ZgQoBYHn(@V&+M8hi(}VsUYFFxh;s zv%Lo2<7}_-BemUY@UtoR8hoF#y#_y_a<9R6IXi|i95eV{W!nrser+>OguR@8!U(XR zPCsez5#gA@cR4$0@Nwao!S^^jVesDgn8DAuJZA7SE{_@f9(%douXJX&<@(^#YO;ry z9!qXE_}P3d2EUVUHt<;wJvJNsyP^vi|0P6q3qNsExA2oOrwjg!qg(i?m);isL}0h@ zUA&^mruSnOzH67=!ta#qmbd9nTy_iJTf=VQyJ*-g{5(y&g`cNsxA5~c?G}Dgq}{^L z(_BScdvJG$h2LK}EPPKdhlTIb;jr-iI8v#XYCY4!Ptxpd+Wb7t0@LQFYGzvashXJ< zeyV1sWp@I8w%E&SxoObg$GiTxSm;X5$(w(wCb z)53RZDx+4j0#hw~bW64Hk-9fD6*;{vyw@s#rds%zSYhGgW`%{uXcSHp@L@_K}ukyqvKY_FmZAEaNiPrtF0_QrkVTjTZi8 z*fCT)0X+%jPow=Ko2kcPku8{k3l@Ir*d>ZqlkySg5=O%B4Cfg&cxN@Awkvw)!8M~ic;+)LdfB%-+Z> zK(xRE@BER&`=qn}M7$V)D3N0dqb0>6UXn`019@ zl@G@Cvd^dJp4j;w{9Cmev|WV!CD2Os>v0eFSP8oxTB}Buaqn|U7vZ?P1Y_GkQA3$1 z7Lb3N2R}D+n+HEPb1(VnSAHJ+yS2R@{9Cq0)Hwz{0iCWqKfc+15_U7R9yRN+C#=Vw zu!a1FGF{jwwCER*a|s^Z%FpHWw(`30Hf{cOo1Hv#rbW4PLa%@*(_TS-hiS`C7G=X` zdTv8s+tAlG^fjCILgBfy1;39?rF{CVik!X3*^8V^_`lT?uI`%qqu%@Ko}`6W|1H-k z+bSLM2jwb8+0|on8_~8AZ5z?HH`+Q;-ziE%ugxv6^1GA*D{pB<^xPKu3~1#o^OUH# zn%?DF`4dD1MqWnB9zO2)3abdC=Y-~nnTD0lX3in4fISWN4DpH8m(E_sd0IsS{Eg)I z75rmNU)u|yVlaA+rFP1Cd#T%u;2(pRbrsm3_rcP$%>O=yK>9=mF>v=o`?Fpr1m&h5iCH zRIcU&4Tg4rc7gVRjwH2;GL@I5T;*lI2L9R5N<d99y$|R30(+X4qXG?0(}+w5p<%lJTy>jF=iTp;w-6E z?DJqfKpH4c!TuEXcd&ni9c<;CaMD0A680F_(_znqeLHL?sVWv)S5hwzz*CFp8rbV$ z?}oh(_N%bpfPD(~r?9_+{UdCfjeGYY4HSc54~0D*_C(k>!LB6r6_40>mexb}LEnIW z3jGmk^Tc|D#z4D3dqNALBcaowH$k1y2cVBYABV1oZigO#z6$*a`W5s?sN%)_20+81 z@z9>oLQ<U#{Nk0eQufT!y9!Y!Jaw=epa-E%P@!^t4H^y2gO)=ls@(5n*i}#`Jk_x4psV0% zfPDaV6YNv4g~s)xp?T1J4Ko9KvUZi{vbf3cRKZgXyAJj$4f6y00PH5%f}XfbHK8#& z=j6dIhgLzI@Ylg^fHpyefws^%Q!$gU%b``!I_N6nXHQy3u$!R5f(p<)XgPGEg-23h z38Jx8!Q+Hy6|@PSQ?P{xS5Q1SU-#hrXn69V{ov1sT@IZH&twlCrxSKH>>9MKL(Xb= z8ekuU-30p-@`V*WTDeEf%5|dQaag(cJlOg0m&2Zj%*pUn!Q+Id8lKhA26zrwBmMnS z55m&~&nb9L!=u3|1Jq^_YIjRS8g*e#x(8*9Iv>Lh!x*B>A z+K5)CVK>9pg1A~7G#^?J#FZz*c0#M6tDvi)^~gC0`!uu}9?gzw(0u4*Xf?FP&Xrfg zu7`aP_9^ITs1nQ-G^ieoS%Mu0?FY?=79cti_GG9NS`Dp1bQSE?&;!te(9_UniLLhImP z1-k+E0oaYmJOx{XbNy&&OgQ)A2*%h@^*bT7tj>v>ILq#XfadcvT1+)sD zM%a#M&zd z-tQ$=!LA~^Z|8<2aLmt%Ei|o1h{Y`OrLQIkXB|2W@~hNloRxL>JbA zZamIrXh8;MAcL#bK^ve=P?3pVppGnLW^si&sGiN9rXHxA13$C@n%9dxjKtE7E<_u^erLI>xbG18s&Dl(DBC+Em6B z#CVKwJo_u4jZiUx{n1dz1disxE{E2@Q-3x4o1q2es0?i=N6m?-39X0flh{)Lt${W} z9h2E#1Ff6PZ5yCX&}R5W1;zt)RB(PC>~d%ovxrSRs!_I>iz*7ag z4q6Y7K7}(Ypp8(+RE!X+PeT-1H4U#*Xgxd)u$!P_I!E>C=ofY#v>aLmtwFR7b_28t z+6=$A7O!_`9<<@9kbYzH;b#4L#v=Q@Ylg^hFvh5 zGwY!ZvpK&BD(0}Q&*5k^>^x`%JdIGtjU27Jkuw{hjqvDm*5jS%*8d`8Gx2lI$&1Zidw0S=J9k-(piNM5AN$LpRnR(U#Y0@V9@-2o zc$huSE70#s)*7i#vfT*P>)0-MinSi42u z@U!9Hg+CZ^A|f%eBJ%mj_ao0oDpAQ%*-@LLjz)bS<2Pz0)g9jH5Y(|> z$2&Sc)Nx(MgB{=O_+3Z8PVt>abehuXu1@PZ{o1K_^rYx%(YHoF7`-$4#pn;C^_Ym5 z?lHMBMKPme#>dkaAKMZ;B<{wzyW+lxQyo1Wg^nSP`yE>x zdmV2$-gW%o_|*{--z9!u{3r3>#rr07Na&U@BH^KgrHOw_8lBXs^P`;)cRtnGH#seN zK=Op-n&iimHzyxRek1v0@+ZkH$=@blO#U_5FC{spSIVfAX(`K6j;DN?@>`15C80~7 zF0;Bk(&gnY?{)dCOG}sEx_G38r=_OlrF73`!VgeG;7zuuB*Ck z>AJJ)TU|fz`fJyY>0Q!u)BC00oxUP{L;4Hpzod`sc4N0?-S%|*sheN-N4oFs{zdmL z8G|!!%W!5qobhhP>5NsG`!nCn{5JDqrjq5GWzXuEH8ra?YiZVstY@;eWqp?AogI=L zlRY4NZ1&9T+U!-?4cYHyf1Lewwwe=>la!N{Gc+f-XUCqEJs0=f($gn5DEF$|Ik}5+ zpU&Ny`$F!Qxhh@5ZlNpTJ?OWHp7c8^AEE%dt~-P%TzJ#<>b@e9u4j)TZwESC*HHw~ zwd-~fErLZ1WyR4|?heXKpo~PyNTNtDiu4w-bj5j`$fIa~5ibT%#z4v#L>YrcXF4~R zEQ&;`7)s~(hKY1Bg06BermNhqq^sPoqVJqa=vwwNsx+P|TrCPkIklQ7hKosJq?jSb ziP;pHM|2C(t#mbe6P2z5Gv$%({?xn1SqLR)f-YOP}+r$HO zMf=~y9pZUvwToKprfebVeCdZlVtN4U?0|3RI|_Gw-u|Sy5XMn=`?l}{;UDq_;+K zojanqW^*Lhe=Mp^|A}Y|^qmeNbY@+Sc6vZpI=ehQpc;A(+Mmt=PY?K()P0F^99&=O zOb1u~Guw!7i~7Kp`E%mAf~+ZL&%M4gfuk3p4<~vCw9f77M4sX25;?jf(U1K9KAP&w zZMP?J{)^CelJdxN2Kw)#*CgLXnRAmDk=~WOl(aUPm*st19odg3uO&@L=X z=ZLQCAJ~;M|K61|k9T8R=C4lVHR3*gYj=)L4`6@$@ksxlwQ^sUn2eX{4EnqbuJ%yo z|6=Z2;Nz;!JI~C>l5A|*8slPP*~nmn4cJJsWn08Jm0zHM!5|sz#Kw%ID{F!@BW6an zRiKd+Xp#~dXp%N5O#)3_$b%%bA!!2LZhlRgWV6|nCjGV9(CsVTCQWFeO`Eo9w)_8o z-#Pa&_v&Fwq{YmAoacAG_xa8_S06)kT=98P`~Si7HFEv?_T4Lj^gI3MeBo9{x)q|EoBLDJ@Xa(xMUCT0E(SA5M38YON14f-TyeuQh<{1`d~P^GTGwKla0 zSNx4V- zsq1jvm3l3%yHlMg`C44l=EL|XcG`S2wI3-@)a9l$khu1}xD^9{JB&28yCu1C{%H-*A=;`;vd zJ5ln9^t*@F6`K(-@#HvNw{DxegO1}^3AHo%MNq+#>kEEZ# z^`q$z;`(&@EUq6*KZ)zd(;ve1ne<0+{mt~#xc*l9GGE5?rE*=L`3h1l!!?B<%UAKdL9SP1zJ`>Ia=kM10@63h^{UL*@q9J@P*Vzl zj6cHjmdqdHx-IifT(8S~3+Z=c{uIx*%k{3zpW)fd`~|K9nZLqyH1pRea|+kAnaKPN zu5ZnJ7uUx!-^2BNnU|3Jeq7V$Gnv1~^(&cIaQ(B)KO+6FGyjC=Z_D+2nIGc$<;=h0 z`by?Uxc+12$GH9=^B=fghf_n~(wYpeH`Xk`^`@FSTyL#ei0f@N7o;vWf1b*~N)IeJ zvY^-WFSs4o-UU6l4lcM8*EcSBJ+4Cwjx888pIwlF1^<)U4D9#Cbs3y4JA&(n&5`=X z%!keE>z8LfYL4OgqvlRLFM=Lv!il*(&`GzNBj$~;`}e|*|AKkkJOz#OS@Svb74wJY zMe|qKh4Mr5-I`lh-nDXYWpU+OR(@>dr&fM$<(F3e<;w4@{QH&vyz)O*)~;$;wPID% zs`aa`UbS`AwW~T;-LUGGRkyD?zN&xK-K$Eg9$EFlRUcdRsa5}P)rT+s&5J*K@pmqM z`Qm@M_{i#?UH#DNcdmYH_2*W9clGyIFKWs*4KzL4^iymw!+xfnm^S1mF90W|5Nkw zb(gLCopt}XZp)?HFWr6VflHsc^sATt(WO^kcGqQZz3h?8e(SQ&UG@i;^{+3kzjyub zuV1vGdBf!!-ne0G!{mnF-|)>1|8GO><(-$`e)%^p|C`HSzWk;uhOfBqig#`N>c+p^ z`2CIbo4&E>UpCcVIeO*8SJqs0$yF^^-FVfptKNRq2d?_)Rljr9m#_NctN!Y$A6@;s zn}4{uam)HGui5gcEq}G;ds}|znlE4TQ!O{N9BC=G+~4x`mcMIxu=U~AkF4tj%j1X?v*c{cTUSeWL9LZD#9hwsvnlwsmOhuWx;J>({pK z*tTa||F(&3Pj7p6+qbs;?Y8ypSGON%zrFp}+P~8NC+&aMp4skgf7|v?Z2#@;|6}{N zxA*QC+ELjtvE$1-zP+P)=iZ&4-1*;jzPR&;I}ddn@3^O9yyLAMPjq~!OS7v z6;FHk=IXS|uULIsbsD~4(j8Cxd_vla*R$LL_yy}>kq^N)?}qn&9KLxUB>o*pe+0ir z@%u&m-ihD4@Ow9Yzl7f}!+UrSe(#0<@GJN|hTpGZ&hb9XE#8mc2k?6w^NT0&`!)Cm zAB41@g%|J}=<7-Rp2F`#m`{8d^NEk(_fhAEq9^$ zh?K*rH7U2krf;zKO*Vg%&A-N`pRo6wz4zI>XYVJ?`-P{9_Wd4vFWdX5y`Qr8({f*l zQF0tBG27Ac+;8u1GXEyqa+JKMjeZm-<8+WdBVf33ZD+WYnPez0y>%HL9_ z_`21mAGhfzY(6*A3veCjCnDI=r{y{v__d02rPF{7h*^{ZiymTFY&zS?4txNsGWoOfGZ+gtUg8tvI{yFp2 z^=H$K8+y`gzr5kE(jVJ!FkRm8Mf1AL*QH)}`KnC)6_;c>uUM6N{S{B9PF-;}{gx}* zGuLdy;_IfvnZ`{gGLLRLnKDP3d-#0|&yN7+Z(;mr)2CZL0K9(? zzq9x~XFl0_*@9P^H{kci)L2{Vf;Zv!U|T<)KW;AF`kWcvdN$p&?a5SS+u8IlZo~eg zb?ZUX=P>rx^v?Eu=`XZDnfiKrdurMC_SE6+UpIGc2i>@AxeOUtq8B zmCI`fJ1)iZdi>rF{I}u$^SB?t{Ymt>4!_6D;q5;UTAodRrK3IdLI>LKI41cobli#i zUHH9(a$humeeD9o{Ayu;>tKIZ!^Sq@w+1n_wTRPQf?qR!>+#!w-$wlS?@BX(=-e>k zd<)HWsJ9#U*W&&L*w#Cde*!-b-EvLU~I+ z{ytG>p?@!)E2Uh%P`Rr$R>=6}_n)bFg)%FeEXG61TWncZ^Q)Htj_7$e+q1Qo7Yzq+Qhh2vdbn~D)Lr7m>U5fNdx_oW4e5rVbox} zlVb_+p7Hudg%*xng_H4W`@Df1MjX%BFV#b+>Fz6zcz|OBe3t9Y59KRkqha2z1Et)sce+@*+uQ_z_Y_A9{n6ykk&%7HVaTZ+ z3YzkI^21>gc139zAG0MdSd@@R^{Og%yj7|D3!}qciO^POI28~}cWhjh;WL=Iel*`- zl}XNxC86VdUsdX%5^!CrjCBuHK8+SPgt-7qLwz~7fBSXSzq(VX`Qx;GS z7pkH3jU|9k`TiV~qSe08Fi5G4Ri}4XawSsL7QR_bQolA@m8Xe!X?JxaIaUI zA{Q-ob$ix2-UiEWI){e#d3{4U0Cs4!cPQUyr6=!|V+C&;EmY9i4CO{fh61a|KFTqz z?t`l!IIn|mgwW5n8WL&MNkq)hXus!Veb1PW+9=pv-J@a)sSM1`P^DhKU%)mWF-U$# zw^-*T1blTK;DX76rVv^Za&aNR3^FbsqCL5?*B{9erUB|BiEb>1a+SeIM)<{mb%KK?j7p`DSh|phFqb4h{l>0!^<%`lY~|7r((vXwz1hh)D?kkC4rQ;se`ZXBFA ztWY(ooO<8}-wlsa-~4V&PiYK;Ipvkakqa6ZIv}%p98P(JDh2K~n1~Eej+=8$KIl~j zi~Z#O01eO)E>Y0{kR4vCN`{mDvQdL&`0DaPorIH3U{OOQV(#3L;UVLj*igYE*1U$2 z;?oAuCgh?*V~iF04vZG6^{n5<4c-vk1aq)E>Pg*vxR9?L>Klrt_L%N5=#JqnRtMTw zOIy=pwT$WUo5!3&YXlO@$x*@iN+OF1WwzKEM7S*Yw&zA~%=E|@O;_MBV=9EV@<_2v z9{`S{?^U3VlqMOhwF#_=>G2JV>2Wl6z<^V&g$OZ9gh7Plt~iLc#V1-g@uqy?o)F;! z${I&c178Hr6c`&?l#@)erH`iiq*pnC$tNeEe!qJMbA^+hy6_ZnJ0@z~!l~lj)NU5x z>~~8rRl@YZpEjX%#4_G85Pdh@gT>LIenY-tS*2Emjl+}d^ZW#;U+2=G9K9OfXEv~> z`QhAmL6xSIT(mDqQFolHEVZjrU-jS!-C~z9i$IjA8JGYZ3%#|2e@cZl;EEP`&{o7X+ zI=pzfe$Z`8Pp*77aEU9JOKRUTATmKFb7ET#J@0`ljo=4HWS{nUw#FX%S^1L%iW+Dm zdRlnZ*`{5#z1?@8II#!HAN?Q5d*CP6k1Ggb50799D4pozErp@68*-;SsGoaAJ)ICD zn>8RA1PQpH^QxS))w)EsWoNr=YDnj>&2GrcUQ8M*>`)u2VmAfE*&_0%?N|Vb3>(Bd zmAK9p)mIQPy+Iu&K4y|n8 zsKJ9rgkpT^hH_NH+hXz(E~vREE)R!t`4S8O2~sRqZYuWW5ZWP?%McRJoQfDk8m8gi zp|PsuXefs=v3ImYr7Vms-9T)I6T&`}nd$P`a%nhUm?~_Y62Hd zqlm|kiM$6%>nT=c94HlsUBSRSnCXh|&6N>RbCC;T-8Ddm-Sp@*3KSRZ;#*aDL*Z_( zB6g&!OliEOBw`3T!wkX$d^WUFcKRd~4J04FA5bIZVideY7XQJzWE?I5Pd}y_!OWB6$;3NDx~@idBmzpeS?TYmV^tZH z#lhTgk2u#BMnkqgShA6Zk3=@b*`|GikB}EX4F-V`@PT}v>F&!FLIF^SGstZ^`$3nA zQLh@oz%r(pLIGObli-IvNbtk0KGV=rl)Fd!5a=xrj1IAhs)AOrR2ABrE65bl!zeLR z1lj`+6Al&XR}81DKWpRW;@WN1oIr5%A<)OnNvcNbR~QU*?KJDMyb((#z%! zFL!q^OY-RX*d{3f;fDNo>B2eHP4{S`l zh7nN)fn=aGfpiV`=OAJNe7UD60xnSp@R$za`dq0ucM_ID`UWRRMFs$esV0?zhk{p* zF!UOFB)Sje@JeT6vDPwE=zEFjKZRnd}RpemVtP~*y4kaZ~- z3B1kAA#&K0J85z*7r`(H975>e5f{xiy+gSIoG!RvC~nGRNUtA*9xZ!t&b>XzKz5%s zG{6Gw4TtQsI{`RM7b8?0SO)jnnB*R>FNfA(@w;>IXR(r`u)$?712bLF6W%}`>W%uy z7KW=Y4rC9wZU}Af5h$q>pd1nXD@$1>3Z6uhA!0uSJroSQI)SCsKsu4uB^+B0xPodc z^p!-l!Of49CE>-__Ge?3q~tGX8@FD-I9)#+a$P;Zn$p@=0Zj05cmTe#q(+LwvsuY9oLxH!v7k-49y1l~ zl@^Dy2vsqzX$nv$BMq3a6#9#&p~dvRg$r?zc(9h-4-|(utwDH4d=Y&WF9h=hl%w}1 z(e`)=zb{v0R|M)9ZX>zob-BVQ)+x;aueT%*2WkCG=SV3(gelCJdEF?C{p&{I8Fr4I zgw=-C83Cifu$fyhU*i4d;weplnb!xn3wyi)dYPRAw1iN4vbaez$#@m-Tn6C%V18&Q z-z`R@Y;G$SD>p&6W7awX!73l3{RE$K?3&J+%89N~-!)JSfhKgS5FCg^qSYr><83FE z!eKp_H$v*nUTB?)cgG;4pvq~Q==OJ zPIPW9S&>9Zxy?K2onbT4Hy_{3@?Rp=_ZM`=fCBE(-h*PS9ZLi}@CNAc1_c$yq-2{$ zPw5o6ws2DC`5NE>S4uD@`i4$jg6IrUSBffe96%2SWo{{ja={zoK6I7!e#7W+4n{oJ zPs?VzE$e!e@y=ihfC*FJO3@&4`O)(qI#1G}uW0b6t9(Q&#e$rrFaDW1&g&Ue(NP|SCEIHQid`$haZn1#bv z@hYPu)s1s4t*qX;y7)3c#5@2WoO=-2Ju@u9IY11>yKISAhO3D{gl@MH-+_#y>*Haj zV^8r^jZITSVEr7@v@2F5)@iJSoo9!l21c>7%k~+J#~#kq9J(F znS-FoKC-4hN>rP}3cXgh8E(%u5Gu{e)iszFuH}N#4$K%nc7;mEGqty=(m8}!9!KbU zli)}=0VE$(4zf;Kn8qwfwUF0MA%2|RuDZ#)Ygrm{FX2Y28wgh>a$Fq&Eu0`Nh7-cA zGQGNGriEMI6>d6)7C)E$Or0C*G+w9*f_Q-tII&D(S3^p0wpFZ|Bt{z!XprJ-zaXir zjF=A`S~_Gxr73n8Fi+z7euGs#MtiI3Dcno6m9iJwwNf_2HXNw{=A5?H*S;xWL&yrT zMmNxWXhiA&xCwA1c$8jDhAZf%9B zKDU;p+V_G840a2F^q5|0oZeq~Bw6b0H3S~*K0?po1i0Ap$g61_w z6TItwB#jV;`iUls>w-S2#)hf1H;j3CM7(6#6rMvQkueFG14fyNiJY|e>BeXDAmyS- zn0v-|mV_i=dU2=%6nKu!bFZQ1w)~{j>3F4EUMZ1UXjzOtd)iHzfIfrYVVoh)B0pugXE>97VS? zioQF=g&UzL%UsW;G3xfHM9O4AL)U>DtL=r{6)q3CXuhl!`7b@i&Qb|8?Y@xD8dxwf z+`c{In*&}gh<2oNB_C|tyRK4QU&@UPh6F(^5|-24c0(?%mCa2>glC6zOP8HsX$(-t zkJtp|uPT3+4`;SFTE3ql!4-1bBONG=P z-r{Pqdk}Gaw;)Ho8L5My7DC+>x1C4yDmwxXqFl(W(U=|+T^F(vXSlqsU0@Q<<;fDm zdEg+`mX67S^nf#Dt;H`NENz9-wGk|wdn39Q!_9cu`65?DxODp@))d^V8JrjOGE7ld ze1u&j3W-4G;9ee(pjSXax0Q)*|5<{g*n7Z`BIY4_x8X!1Aw+B}8Y|0=D{R-1wL~m^ za?v7RR)RrNb)$jiN_UnGU3qeNRni{s_I#iua3APgZ@D(_s9kC@|Th1C6 zHWPAP%T~5SNlbB*5nDIL!Bs#)c0@C{aS)RTi&Z*Hb{Fz3h#qquieb3C+c1eO6>cwL zOBRdjtLbrftsNZoNTMJV;RNNJ3H*B0?y2kH`40EPVij5kdr| zqO?G{Aj_fOVK&H_3b{cEOiN>$7dr!OU<%zt*9*I3;}q9`UHqtGdJY#nS3yh+cAA!RY!zEeBG~#SVDTi zg8P6wDT5dd*2sf{Go(p$Pp58u2}+<5-7BIQqW>siTyo+veSs!5+5`dvkRT08d%@OD z1ZT0lDd8;=R`ZDzl_$u-u)hP>KKeN$)*@3!`-zHTUH*XH!>X#p4i0g_SnOPY09iNh zMr;|oCtO<~X$hfvF5ybH;832T8w~xRq}_y<CNr#ig>lu{fCr=xEIMCw#0=(EverI4*#h?Wm1F3pqnr zQBI+d3!u53L+jHm0ND{ut6E_lv+XIKE#MR=NpMw!t^fmu1{jbm_Qw#aZ0R)v`5|aa z%X0Q6mFy0HvgL;ywq=yC5Ul6!%I0)rYX*)YatkTWG^ojg=<;leIgxYoaQHPa&blkW zuGkk#`IC9*X^kgAI1w_G=7{patuk&PWmAC4@O_vuT^?kA5|)I4M}ad=_m0tL zfJ)F(L$anh;I_&c=pnmg*l&-F`OK~A0A%XRi%4Ps`Qg!FO&-o+q0PNO#_TaTf`%<5 zV*s9`Li{K-E1w=4D*rP%ak4pbY_!e?k|`YwfI3(!ERA*pbIC zA8N{yo&lLN``qzW%Z~K%%IXgLT&xDihMyu)oM0V z4iE&&xq!ui0jf7JHE<+MDU?;SfGEGOAOgKWt)eCpWVhSP&Nw5egY^1En4?D(w%m>h z9561{ODOM~JYW0BOpSJ~Ctn%z;>n>w#54DX_a?@(ftr4xILN31&-(r)|A?~l=*qW4 zK4hzPP}kXGR>~E|k}^idplJp}{kb~W_tWnU=Sp`c)WVt?whhHIEbihN2N0r;Wmb($ z22vdH2L_<+kb?GXm3{dfX1vfReK-c}^^TrANyi~5rfDD{_xAIMJ7eU+)3f?yX{xlF9+HnYp^)5EY>c5A%QPPSK7Y|uhX28vo$HIqR#4PTL9?c-o(3KvYWdqqRC)QNpP@uoxU;J># zK^TF6TN{I+m87K49M&k;tylSyr0`(rNVZ6Oi#9S2RrpF1Cq&0 z#WGDe^t>i_Yq?#c|Fo2vsCW#2Z%gHu`A(74#(1Ba5|=Y{jS{|Cr<3e zzF#PbLa{J5jC~i%u=_9(;ulSDHt+gUadZR%hJD>rH3u=9U2|KFw1)FpyM!?b%Qgd_ zW_H!vjiWI4lLS<*GFl<_!6XG61$!}*FUr)Z+r!Bu>=}{XMV=K=x)5Qy@6L~Ku>{)( z<4m%{cYitEGO|@5moL~OJRHjQ&_q$%!X_3fYaS$$IU);zjb?-S-l}R)?6axXXHRfr zOS(Uq2M0;-d&cMlLDN!Q+LZV(TibLd>-Foba+ho)3JqYu#FF}F2V84Qyy`4T-`YwQ z0XGmD!dRCPJ2>Oo%cqO-xv(tcmD{YC0-c5Ngc4w1gPFLMHEivrlGt|QgoHs@!)MnP zO23>^;09nyyv%yA0v9v`Uo^nJltFk-iXm{STds7u7Ul*4B{rgF!5pqq(##S?hhwCH zq7mPmSvSL%@n3>`Y4J9?kn(hsH^B1_*ph_KxMveDvM1c;%3d-y2aAf?D6a1J7*`BIX}uqGYif~hXD%2t8gcd*k?aJ z1bOSIH_8uP>@Pr{B8aw+dKLGs0z7P-qvf_(k}`ZiN#5NNDQFjpGfznAY6Z_b$jK*L z??4VwkTHhjBc2sJMYJmVS3`?cM~jpPc1@WF@1)w}?=S=2X$D&L2nohdNTa8Y*zAs} zGPchS%{#eIanv240q<#hPMt&!J+Z%D{Fwnl(gUv;6K%V-Lls5f)9=FGZ5=dXe$v4q zoT-eDvJF#re%nerB?eim73bGkS`MviGm1Jb=DWipTVQH;yvOXtS9yFPm#u^9hKq9# z@!wxKl`j(>v9CTKacy#@ab3~a_n zPv9LPuBIPQfHNfvt#)k~Cvo&$_WR0_8Z3C`hvgNXarB^#BCS_8&03vDbZo(v&uByo zd}Y-xPt>s5R*k)=PZY8qB)a%XaDVB1@f;)P_E6j0q%48g{inc75{}jRl4vzC^QfzQL=Kt<5QO1gVQ;R0iyUel?RPWcqJ~Bax={6 z$-#gD-O(3u;{bpQ#Q2A1*jy`v(s1*p%2&0|aEouyY{Wq(k<@7Na8ogd-JglA^q)A< zZo1@{4*0L)9fZ?Paq7m_gYf&V-K{5100I0w6IVWX+(+%86-**>cLmCY-$#I)?i!F& zJ-gdUpr5HM-qZ$;KEYLok==?c}>4)0gDcQ8i;ODoLI($h{u_n z2cn|B#kOE2-yL$YuUa`E;$UYW5 zH>DH6LwcA>F+^U*Jh0zCTD5EDvsJr`Cr)&OV%DyBrCx`LePaa})jt0NFniH9O9FH5 z5kwu)>V3f@m~s}~f<++%mV?F^go$7+Xy591MqpVz^evS8+S8Ei73RAv?dtII^-uIoKEN+9=mQq zoCxzul-ifa8VHn+e6mUSPsE8n6N?C22r1B6BkIE3T8q*MeuxNPl>-OBYlR~#+V>`OL*E0bVihx zNwUn&2TTv_T(Qhxn8PJ~FTA?5MfOY=_=TrA_+1qHVL*Hvsf^DLRzmS&*r*6>XeM+{ z%(ZmA#Zutc<&5VB87aiR#PeS*ETyF4L$C=bF-`h*VeDH zHT1k~c0Iyk`_X3wbClT*1@SXnc!|)HYSdRv~hXF0vN&?uepCW_8Q!TRNyGbxawAw!HJDuTO9EC>)GZFCMVjoKhdnr-F5g86^nNT0 zA_249SAkEWpYgGS3|_Vxwbj&Yq1ilN1u{ED!1_ddr=kUO_rM8!cgn`{DB3NI+i|&Z z_Zv@~=z*A-T?nG~4F<20nLlwtW5yI4S)H`SA{kOszu|)qP+EDRYrtA=@43v6#Yu&4 zPq5%}g!fC@VecLUJf&O#^Lieh?~)U=1DI&SKvWk8Pgc8xNTOaYX=Db_$YvMq&RYKK zhl;(36a0+23ww2eO!Pj%wP%cNvgy)^2nc*CPa~tN3*xY8PT&sM0JMHh#T|B{%8zIU zCO9RonYzf&XI1%p676NN2Zv5}JYc49ebqiHpp6q%8r?NgHk z=1aeCM*8fO4jkEUWuy>VMYk0si3I)8sx{y?PGJ(H2dQ>bHalv;AF1mst4u^U3NjZf zC-_87FZj1yhPfAZ^1~P`031!lVlZ1at1H-6$T|TIqMHkuhY1;Q9!#;B)@zP1M2y&x zHzE=2G7|h)DwqZlWXvLAvEkQXV?6w#BmTU>h1ty=n43Y{g2UuHRMYG&WS=eEIAlNd zjW6`SVK1T(1^mOFN__Eu8217~0TtX!c(35^=yNVr<02J^S zH;3?Vx1{55d!bw(%55>`l0#?%CjgLALJGc3hSu2INu=NpHjO{AAF)bivjUUYbkIaI z{S>BPrEZ8kbdo&JKP8e_q=pk#88Ofg2OnzEebT9!Fb~uc>6`*Di zr6^xcbfy{}sn0$zzzuPT?nO(?r%;~3^;%;N24dJNu!SXmI>Cw}mEw#(cd#|bfhycH zw~BgR9M%BI;dYd`vxO@>7W6Xy=IX(cFxWE(#8MparwauI+TqMyO~=o};1IS(5hKDK z;fzq$Y>#G$GJ_-QHNPK0XxN@deq!{NxT(%{|-ycV)j>qZTfU%rRR3lXomefo& z5AmIrLe+gHC-T(zLvsNli5cer%1@XVv;c0<#O+7s0=jEdaqJ{Q1(h05 zeW&R$nj|+4=xWXN@&9aK!=mZTm>M|hCi(zpd>u#ZzHKf5hc&(@e3}CfS1YKgY+x1c zE+S~o870W7q0GUkA|^Gcqv&!_Mv|!$SnH}@#^*$#g)M)`S4@CvH#uoTNI^Yrxdwy7X=ZV*Su zxsP+=k~z8>Vqjx9syAp+OVB9;Vq=xP^02eiSakjRaHSy5_{(SZzhY zYc_!ckR)?Xom3Blf;=ZFQR!fp0Z%iY6P;pCH=PaU({mH{zn%*lBo8B)qBtL(rbL60 z=K{8??Wi!d|Kr^3cpqEUJGy&1`HGSunBkwFk~j0zmj?LUG&|XqGUM-3EO-Vbh<>nd|ih)7qH#TV56n1XXnS%FPtGnS0t#Z zMr4x8>1Q+M5!#nqRG@=-5nfV6pT`oc9bXb4k5xzHSuQ>Y4f6tN z`tW=)yHoY5H)f)9(v%M1o3u(ml^+jobAc#i|Vq zb-3Jf=Jg$}rcOl|G~kxhFs!HHj1i?l&tR>EuAaF@!%op!EPonf)_`54=FueK(kYuG z;JMj)-;|EeY8|s5d=hy5^fSjWYY%2A)waXQ+xY@#gZ?wv`6Q^KHY+K{6LxcS6MbyE z=!1EH48r#Kn{RvD$TEje{&L#I{EhO{Cg@86*RZf>{jin<$9_K ztqzdNdsdUm>49)oAt0ceW1SBHt+JWjuHC5sb0EzVmQKbgMJ-Hi%TPZxE$?CNJA0lb ztai)&>`duYgN_cCn{~K{$Qh3FG^LGXM7R4<_D#*O?=cCwaF8LaO~`;x$8j6Cib;(I zn!`!KxeuArHuYNS-JmG`{IIBPnstKv%zq}hfr(=rsb7}sTx3aUodoi%_9eYq7Ex~}Cvo(7@ za56q8fpN^B+Bg|F7wei1wCPpTbOJMb^*I+$3!wlaD` zGprN?Fa3jYEKt0o0vz?pXSZ_Tq*1$?j)Gyp=n2JE5XK*xPULh8upY6AVrRZYKj;DH zSgWQEQ56)F)agPn1Dy_**{Oh8g$So&qGTxxgL|HS&+N`)Oa<2Tf)xcXDPR!x+h?f= z5;ob#Mc~zfm&zdF*zfECm|ht~5q5qG;mJ5K^P>==z|BO>nU%tGaTh2K`c#CRtvpZ{ zQ6tS>n4Ch>d4`V$5_V@m4V%mk*9Bo`^%*jYF7>eDT z2H~3g&t{w7oeL#i{Xqm6*N|n*l4BEP+_x~71gv`ijtlQCOa}VmOh7Ee zzuMtRNP-@rp1!9~7`B*Ua#e*JRz*FoQGtNpo-p0~42Et1rQb69o*m^Bs^FU?5YEgS z@H=kIDjiuAVom}~7xmusl%L)BO$Plf*kaJ*CC>Y(-aAa&v`Zo&eQ?dkI_SemvceI%fPsaSNn7|J+wyf?*JGNzxFoh%$&{bPe9n$q81Z$w-W1xlmnxg008rqdt5PRU-ZM z0KK*WI!?6T0-z&LFZ) zZU%3b{hlR2!c_qVH#vl0ag#kznH;u4R6yIBMdl7cCYP3!K-Zc@cp~GQrH%mFzsWQsjbkN0 zsvBRl@ z=D4{Em|&S}%`yD6bhMp#t@}{6Z0l}9-D4P4Y9U2c#C0J>Rm62^l)bS@^#B0KgLKLi z&e|){Ns3_eFj<0HnP_*!A;NeTAjtwbqW1xX_`7{5#knEdqju)g08({3>uF(#yD?z> zWDtEhN{kYS`siw``E3CUkjePOo;~QFhxejtb)eQ6KiXAtM0gn0;82_i91SJ8k}J82 z2GZyK{YP`YRfWZ#q-?f5Pv#L5}3(&)V zCIb_c*=m1CMk8sCB9thoom6 zO5_#b<RN!w7El4fkjyZCgZSZVWETXM%Uu5ka|HCg2`zA^A-OCFfH>no zP9-l9SNip|=yurSfM*M63yqbu$`yD`jz#rs51Ts!!m2k%W_PH#%3K4Mb8=Lzu;Mn! zO(?=Bpy^DQ!H0oy-6;o64HRkH3=QXiA~k0QiW2G;2vkk=f|ofcJyMzK+K=IfSE3vO zrfWOw3M!8Q>wWvs*VKXj=%?m%w6qK4XScZENaMJdd{4>L@Fe=k#i5P18^xx!PX$d* zRz0LLq)=Cn5j_;=)`Rm4;v*vc68cMA1PyyBNh3Nb8iAUUCS_LR8a+{_VptNRjA>WDmV|pW_w+!a>fC@TT`e=6H|J5(%=6SA z2df`obZVU}L`@O>hM04ky2N}qciYYEz*0M=7mO*H{dk;Ygo^GRO{9J_Do`b}#|urH zNobwMo*Poa&f{DKpT9GCCa{pZT2IfPyxdU>zh;eHZ>EUSKkRorK|g{79*N; zr-sg}&+&;kYs}Q?JP$hwgfMk~0&<<8s;7d0(oIt{rxT1@XF_^4--0ubPcQpXqE*+Q zTC>;?$hhhO<2Vs%x^tGBus7?Mrfn$#mz688VAT zJpvbb_U!7ICShCL`2a&{cHx%!0W9IWc;^FH4mff?+4%}q!ouzOfD*>hJb;y;YsW;R z(EU8Op>j0gIa0IPXVpZHRSpoc?znn6-~Rjw%02NmH2_9?{Hl!N@O<{@k0ZgiqFU2w z-MRP^v!cYU@iClVZ$A79yrhRqe{#HZzWw=QNbveJT*e^9xvR)oQR0p`CFauSbYo$x zvJcYezJ4?BT$L~u?UQA5= zM$e5O%>C2j^i}SCb{hnz^0Z%7ck^^yMa3B`9FCbMCZFM}qvr<0Im9DpceEgRz`-(t zn~|Lx|A$+pzO+vEiRpPW=(T$BqPo2#oeyb07$-3oRw!+{Q^GAlha&*VBSUM~M|Tbc zNB?*-E!=AL5vs5UiFWRv2`Ysq+&(eE1=!#V+0$tOU3X57@#7Hv`3{4tDn#_9FnOHH z1goaHfL*;ZO-Dh492#raL2wO^3QyOD^vrm$i38{vf6J?lALTz?z+t#O(C`7y2}nZR zAWCQ@lw+cxGFN`)k6;f@FC|GJoj)iJH$e-;5U_Dalx?__?&8PvAqj6fURA zqw^`W+c#hBhW(mw-{>Phb02|D2#;i{Z{SWjn$cIUr)kDF!-1?YHYj%LwN5#PqvtY) zcx%(ZnQ$gI3Y#hzXJg`RD|c4wK2Ug;IyI@qB-;^=RXK^!br^~~Kc=Kd1-R;h-n*yA znCtbNum$BoY)NvyUcu27n##?lK%g#-5GwF860Zyr^ik+&z z1Wu^>>o`ezDv)*8?m5eO)z`D8<_z+3jIW00IIrr5d>4(Rv zHO}0CnT1523$|v%-ZKL{HS4>G@)I-h{<%rq%pg@u$BZE6qB6K6=pA$!R1fATFU$N4 z_0eNUqJN=;Tj;p#t^oqZRTxM}8W-2A z!&`RM?Sa&lXWO&e0H5^dfzGkd`<)dDgpP1Wh1$7W#L#s3)D5uBviF8=+|(`Ezc#Ud z<`Fxk&<{3s+blKq!QB=N$e0D>E3;0yE7?p@7R_toLK6>LhIuFmothO)caZ{zE7O{k z>b6@}{{uynrno=*%x$BIlvy*~ikMl> zb!>*mv@LpXrctq}`+mp?W~ql*CzWUg5`>dsOB|;#a%+~eWOSRXN!T1*y@BQ$>6!iN z#vTW!8>jNUx!d`C8s-ddC7Ed>bJ#tj%tkF`!rpVm3Xmmq@emV#mp!;XQU@AgHo`$@o{z=E6%yc zq*%qdb?G!;n17Ne7+7ruGTciX@#Mh$v11M4Iy0j`$`{uAN{EPtTa8099p{}px)Z+Z zfBxOSYN$_|p2abvo}l~6)JviKUT{qHc_w|?_kE{*>Z#=Z7XCqv_=xJ&F zLYH|>a_tgE#weEa2NLV9=|Y)PpcfBwHsb&%Ay91K$llWEsc~~-)SI9eFf$Iq609|3 z?3;=I@JakAe6%3Jd3CdZC%{q*$sKIZEWZ;6MBjj4KaOG@#~r$6?2zD)aW`GH)8kZ} z5wNvj?iKCHedkPP;_M*|72nmHW1Hl9w=zi2n|zO+m*0y#;+r(Ihw)Z05)*iwHWdf< zVA+yRoOh#oaNdZM3U%#?GIkrBOm@ub_Hy^ZnWTMDp;JdM45+f4b24?p#nL=+p4_rK zXv1T3Pm@m72h&)MyhVAa$nno=;KOl^sfQ2%rF^7|?Toja=l5%uM)|^AHZzx*by4|= zatArbEKf*V6(v|;8C6Q$EXwH~5{I)3x&YA~9`O*p+Z_eY+IvuDWBO&_I23w_uz)fe zRoIBO*#rAhKM>kwhE-?>VYGE86{-CWN-C~x8>*Gl3_^0R2W;{z9uxilR^x+6q(T<_@>w_*V(FesrWiZuwV+{N?Js237 zL>WFT@KJ=aOq5)SU$=3(pE}H01QlSlruq>90vMLCQ-bjdu*~|?c{`5U)S^@=;Xhtc z-2)>T)Mrk$M0-(-Zq~&K7j6gAbNqZ^Rnn*$Oojmj82@q{fb&D5np+AGd8b-y&TQz; zAGH>h<8O;%YCZtc=mW31i%X+3q-wRd7T9TE^&+Q_-K@_ZTVE2Ut=c_jEUbmQNbO$u zgBRDKH#7dVbD>jIcAPSrf0j?~XI6~AAwHgHYhpTPwbi(~9<9G4fR5Rj1hw8&4kRee zNwu(pc&q7-RJR!>54YR7`Zj(1kK)6bT8yHNCy{49c$Zw7q^FX5j}py_)aqzilEn8R z6TZk4@N$^doak4hdKO>m+#1Jf(1+7$;lA*NqZP-Kh&ukE>6(gii~4{wkzl4kz0+ss ztUSiQ{%U|q-RQikz|86%N7YW%^a-zp64zmWoLs;^*fibXA{ud_qZ>YK79XAy6<4U* zK+i;rnL>Z(M+>@|;pt0~Fa;1>k(sD_b%r-R{bpjuxzX>u5Rq^`%6%RsiEF}A>@)`b zC(cJnhMBa5nPJEH-1?@cl&~H=U8B*j-%xx4D-=H9tuDfJ!WReS3Kf~WJK9`=uDknVZ@Z<@knBh43x%60#ceI|c{c-9RlPre|S1Fab^sGzK z($105}qM*Ez_ldrR`=lC1#RO_&r+)ozq8X4<_ljd;FkcG6iru6gS} z=}-PmHRxB_@+54Gmry*&(jM6%_ zrA(>|SnnXL)#EyUh+Tjn>6>6vVKvHBfwG%UQ2_FblG`(@H$rip#6K!%{csYaH=8g{ z^BULJ)MY$bhzNfGvW$@SB3QI{OfNHYU+LEM5Hd)ZeHdd2*0`KZLvPG@yz*RFjXtTy zff#4wmlvk&cl_e(t}VjIjW@bP!}$=GE!i_6XS@%aaF+9^bOGrVtcr{vXUL=w z>|#BwZSFpZ+&+}%r@t5$=kb`^k;ZXw{@0C^QE9t~oE}?`i&B(CN;$vfxdmU8)qY%w z14xg4LKJ_v>?haR7OeUyVtL{xOlYc>=nf8ZNq{DP+%pFF{+s>bZ9!Yr`O&^~AuFMm zO!}2|_5b$XuFwALl`q|S@|K%T{U=^~;!TZzwCLLU71@>PkUvTSxkc4D8cr9DpEptUAO^p0jH9?`O!vy(|~QZU6-9~)~C+w4Jp>GgKUun0rf7_8P#BghO9A4w zz{~#BTJuwQTalgU!6TEpQkq<60P&&h2Hq!|v)9ReeYR8XP1%k`NZ+s`doYz{ zJ`;Uw%|eqxBh0B~Bh5{`jsHuURVEg%XuLI*me%VV4`0Bf3z^h-n5C}P)<_HjV_VC% z@Uda}vNYP=m|~83)Mr~Ip*}mg zc+s*{4G_@Ou%@YLS!w|vS7bfX`>lc-$6NJeX!+UyYM z%A(o9Y+gpiN78%^ZdvkLzhf*9G;3OczN(VYVBXSC=;P@%I0)W&edSInw; zw6{8%yQ@xAYGV&rF1t;}unYFBv4@XH#kHZP z9$Bz=jXjO93fWdS8rp_sNI{EEk*rOjMgtT^I^EO+wUNqhLnqttUf%#co58j5e!Mj_ z)Ym|%G}M|*1OB5zN@v@HcG6UNNV!1Fi->CZltz67TNO)oQJi=Eo9|vgs!J1O?iVaF#fi5)0&3b=5z`-;9*Te)1qdx zW(7C^2_Rp3(Z=9)qe(Ap24oX2W+xs1UG?cpd@=em{&05uVd8U56Dl`Bvoz5M8GjV+ zPfcxh{M`%KRReL|w6Gbbc>KM{!8WDr`1_VBJSZe%8(hSq`Uusa4-{V}?oSa!zo_78 z{N1z;OkB9p70=YJY0}X(;j`sz!)L*!x{aD(Ga6L?tVlPwoCYvVcKnGH5tGVR7JzNW zA6Nhm8Gm3|b$AY>uW*2GM~|6wZJN&y033KI56JKysBPwRy1p3@J^*$GSPi%V6=@QH z%8bZq&?``6Kp2<=8l{cwv!=Fj{H;Q?C(zO(^&AhOMZq)0;%lH+O2NHO{kq3Net@o^bADyAEc*4NkbhJU$5 zW&t0NV$*VsM>!AHJ^2^uuyO{nkZ!u5In&StUzeFM5e-f7E%Xg_8|wW* zKDF3{T2Y{%vd%yQy_huo7gPj|;G3wpBYTZLfou)g>(F;Ywi9*N;C7LLM^1AHXKk@w z7cU0pgY=gr9oMS#AEcH@c{o;8<(d9+O4C<|+K0=>Zs-Lz9!H%Z?`0%PB|lGjk23?` z#K;6e%z&@>Y?34jk)BanKND2qY(nyX%2^7TV9?W(aU>MiiQc&UTCw9T_RdaBZ zf+DS;vxyqN^~0|9!w%euNL$eFYnuFyG3mgoZSt^dGN?)>v(5-cDq};6-|{lNSRw*y zJE&0ph2eZVu|bj#Y|a6j^P60Wd>=fx{CM^8f>(~kf}3;T29;^6eR%9V0ZBe0n_0kr zTTfKLPa@A??z*PIjdWr?RW5U35TWiG@Atu5A8CNlP&3c~8<0gGxw(t-60v^8&my z-p>-CJT>bC7$H0H(~H$$fM|F@(Hy)<^l#CJWT+<;8Oc2G9LE|zRdV3k3 z;k{>0N~UGXxr)*0i_kFYh6lN zv@Q`_VbyllYKNTzE$+*;RuwnyhC`ElK1)JdIUZi zh7H$g;t{a`6OS|q>%%Ym5}d+`2QY)8{|HY_*kR)N1~Qy@jN-h3D401CGhgE6MYwfn z44&MJ+TP=o2}~d9jHK)9ts_)l2kt{X-r*@W)q@+^O%og#_#kYC?EVJ;S%=LhP@q}3 zoi8CQuL(V~U1}84>l=UtO|e}zKk;HcI+BN`Ca@u)MUPF82}1sWxR+pnV+z6p0s{Tb zW5O`{Ci;<3o*&jMTWu$YPtY7zx7M zn?(&1yPL%+uWY0T=`y9W7QU7W@6TO8<+4mTCH&oti`#3a_9DCOO&ml|GIT zc6IYE;>khZ9yCJ>8I(s;!LOndF(RLaq2YXh95IkV&%u zWVr+%p!Et60$9jpxGTF%D8@(SH$IUFybBTdKw}N-+K?T84@4UmgBdy8K0M0g<2`Ad z5HU3u!b1=_9{<-G(4c<&akCz-;kYsHVh*Rac)zW?vlWvKR7jc48~)?gV-G&_n#bRf z`^Lc6{^?H^y=miTSKa%&Z~3MA+m`>$2YY6)aWY!lg=}pfUKR!EQpDvT za4t>mW0Q55e7-NcN@C7w^?wheG{fSUfN2cey2V_ZV5}S2<1dS`Vt|{eoWAhRxsB#7 z;Oz$~xxJi%56?Hby_^!N{y=Y-R%xExFlo{^+~|Pk5F5eBU<6Po~u6um&lFVA3)Y2hD&qzVoe>I0sas=h9fdajA*~uGF z0PRiQ#Nvw>RYs(nP9eiGfF(NuBaxlh4=qI_G11jHac~h+Zp}_~W;bJ!nVmS?glTDZ z;%MWe0y#PH%DVpQS{rj}X>F7^vQbWl(b@EkP!Q+S!u2j5Klx9f<})xSO?lY;CU7;2pIG z(+sY=WfEJRV;>~O$Dhr%*D|ODrCnE(9fV0j8*DQazgoy=*MifSy4uBXPi9f7X&DAJ zf=phA~YC6u_gMvjh0s{MicAvmA6nJ)G zQ~;P5OJz4LWhu!)GX765PoY;vy=&_b#I}ys__OtO2q5!aFoK{rLIpt#oh$)iAxm7q z1`$(Yrwi+ZPw)i2)x^0K#?#ca2(ub+=>2#kw+kcl1=1(^YnP>^o|IYZV~v>%I@T;g zS#%%NTS)$p_5hu>ODN=ta4ZIRh|DX1b#)n_RYLM1=1)6PJb+9Zz zosYkzb#?W~Lj+{}ePHudkZ=GE zlgDKAN{+NHTL%3p9nz@G;vl;%&bO69x{0^>z&WBVuB!!S3gXG22oTq^qr0Rdr9gf9 zq8OB1VX03qm&!n+EzgEl)FEu;V3#MRF0rZgpq0?wm)iOUn}u}#6ZQuEbOBnIlDW15 zn?b(jBREBxL6S;Xy>e)MdI>4zrR&p@uhhgGibe$#g{u$LX%#EI{Ydl$6=^D*OeHL6 zU~&-8%as8*Cy;lSH-tQ`!6&9l5M2W2R_rWMmJn0W@+<>vKn5O`urOCCtiMQxT(wlR!hM5rrruL$OqWYi3T zh=#Q$O%Y~BbqjFSZgdQi4w;8W^5IKKF(4c5$&^e`h@o;$~xO~LIs7~07b4F8}NVymIf!tDz>N&S~t{NqGLw`4R#Nr zI!&;JX)sSiV-Mmrb=d4cySX;SvLdw++g)4QXIt4HlNxGzgzk zm!_AH8g%R*%#Kf_)!t-VC1kM~ObOG67uY#QEbx4R>T}FPCo6Pi5QYgQopJNdRuu@W z)d-3(w*Vg^YR)^2TRWFAEJwB0K@9+pT(yxhoa6{hHfm#`$WGp8D-(U2mm0A$3V60% z+=B537nzK#=d8hW6s2V$hmH-oA5)LCUBjufceNq9u9Kz>(Z}_WLVaT2_7Qjrp0ktV zu(b7S8Wdx=Um&ymr=2$Q(nzDnA)_Qu5#9AbC6<)vvp#_OECVF6ENzh7#XLU>;$k)r zcR<#Tn$$n7gBh}B9INpn+1ZhWaQ?e09!~vYy-)_=F92baLufe&EDU`3nb<*7yL5Vi z+J-e5KGp-J*rz}&XVQ@Ej8NfS%t`|e2-uee^ZC>)?bykiZsH0u5q|xTy(XGnwed6TDyG{1IwJ$kI4goZz5^6IcTD4N6cUYEgQ+ zSkkhu4ep`o(q$RCY;Q}$GZN`_>_yZI($jT|GN>xcVCb0lqX=#? zmq71lE%;|uQqKzde;opd)ijaz@w0-fiI*&{CSFQ&Ix&7WJMj|dcfiTSOKis`z9N)) z1>^$3|B17uiGOu15%{MmTGVW3(O~1mkMZ<0RWzOeH!HnFY{*)kV&lga8&VWIhl2JN zwWQOjWoyl{wW%eGpb)gR#>uCaQtBrc1TB90XO7*zYTKW`O=fK@N7|skS|d{!?H7U> zf+A~MbWovL#T76hlbx3!7yjrMSu_CIaNaxXP+3Qr-9$cM|z6BXtjMQ^V$PL zqh6uXSuT5}O1@YqZ`psw>l@|cmd=rpeZ}EizHrs9>pdwl+&eUOQ@)Jnu|nVO{u3wK zvHE1lP5(*;X-TDsDFBXfh`k1iY1Y$tmqHd^#xN#V2uC>^Z4y(``ia-%$CpR}vwl-ujx0EV~aY^5ko1+!sjl#b^ zE8ai5rvq#Oxj>pklpnk!;`lU?ERaMP;S+1?>cQksg9!C&&@T!_C~;fL9Go4NdrD(H zMWFgXaj4%b9ViutNf$wSu`frO5a%8~+(!(50z!+cgQ*rFW4Hhdn`?Q)e~X&y>=RrC ztO;UyxGvLpRI~tgUx*D6R}ynGxGUn1sjRg^cVeRWtk|V2-oSXR4S1vdZe3Z2Ff(So zf=>jcZ8C)&nx6B%nx^a~Hpc)?Mq}lVVqKe4FLHBJLw53$2x`+CX`Jl9JSV$JwL4P? zEYNA?VEif78Bd8Cdn!Bm+fI!=h3-=IaM`U3hAL1$>4s&EQ2z|bV5OY@VcW%$MHqOF z@KTNAlYp3&xn**=PjH#&R&*dM+sUWvc-70Q+TDX;l-eyG1MSL$yrkM@=; zrF`LJbIvIlY^6V(GKc2W#?{T`Vsp8YD^<`{We^ZtX-rqj?Aw2)&l{nv1pNWNlGj}D zPI)DTlThXf=9cEeWv{uL&D_COFo24e>o*9d0o~Zg0j39DCd{R9r|IDz)hie|^rp|t z6m>xn5Tx83~ezOWd@j@YPihr`fLIj3`8udd zY~f~mUoQ@Z&JK4<)O2TdVka~k1}}<|x{Uv7o3XpC@&2Dq;Y&1w5QJf`GFa@VNECa^ z#UZa^S?uOwWsi6B=+MwDr8@@m6|Z|F*XKEQgFIZ9GCQYjVA|TXbs0|iu-O)lYvbg8 zK(AM*ReIA{p_e@YV%&&9gdkuq{dC%g9C);@mU@xo^H~mCfiNkkPGvq&g(Z6WgEiSr zRIVCp1OF~?UzNGnnv-suC}@FWH83O7;UcL2h#>ale}~7daVaj}6Zs4%*&3QqK>`@Yt+@le3(`Oe zqmW!&KEum>0^8@&A(-rNJ$EYeKP)K%Qf#GYAk?-6aWjx)jrPP5_R1A}m+-uM7{s_- zC8Wu=0_A`vafFY_^)7I*-En|91{eNOt1+?8Kl= zK4S0ByJB=<6)Xvk2!OysusyAB8QyR1=Iny5&~8A*t;U{L>Ah9ehKEUK?1k> zFzAj7QXt)c$rzkJ_ug2QpKS$2{Y>S;=Yy1`oXmvZt6E=-z<^&JaoTX#a7H=xag9ep zQ-6SQ15@M%aaSjfEccN&am1ww9X^qr_yqKXM)}~Gu20z*J>0=`ebXZNxktE7A5;Uj zsZ_}Rzbz#Bh70#1I!01ZX-#lL2lz&14Etu5a18z%v>zfI!8-=UFh`KEiGcdW!`nfs zOVU4W2arwFtcX;+h~7E3KjuSqj8JlmYg8+tCKLckq!BN3NS2dH@7#a|3eF0G0&RGGsSvpbU2j zyRwW}0Wm>A9kEQ4FM<|m5_h-W%O@TFW|`68O3%JYVBi6;$v+qQQL)fxELLg5*>+v5 zveO=fAjyD#j!o!{IpPOgV%~@+KN(vAf-;b$P?j%CwgDbcvyG7$pyXx=PrBX^u&Zi( zgT#SgbJ0Z*ag%32EJst2w-lkEFi7Bbkt6LkeSyfBzJNPJS=gK-66WArMpY5Yw|n$A z3+@={CF$xN=~_X$R_eiEZpZSlAcRk0#E<=fP5n=z>;2K9w;0f9hY z5xrLRqpvKd2y}Ruw$zeBTW;?Xa^b-ubQ%0QE-Wk8wv+vd=L=<03HC>bO=O#)^~vv8 zhW`%O+}R7v(UDHS%r+s6-;OIKunrh($DJDzfT3~B>47!-gy52-)X~qv6BK~tq$&23 z--7;BAcIfAMARXEXw`L_v|f}ysK~bN@YwcuRFDEOMA-nG+cO~ zlpFR=7fW~V%a=!na$`5+bv27O4-`wycjOEG#nWX>Em65SH!@QGsg!BdFi>+4Z9^zW z{HKXR%1jK#qC{xrww^8BBVJ$m>gGeEy+irF8@;jXT3Xt+weY`fJLT4)Z!Im`TiPVS z=C`-CZ{60qwUs3$olp3+^|!ST479hl_w8)&ZQa_NYuP!ly|sVa_U(O0?%&yx+cD6# zvp3h;v7@(lVCRmG?JYao+gi7JJ91mMwQL{g*wND8mfN;-$F`2GZ3ABa*7pA1_HEm} zogKM>w*K7Coqeqx+j<9Ddv^@%$n~MHx1$4zJ9e`2j_qw7eeK(JwC&v5vc0u!XIpM( zTl@Cb?OyK=uXo$dTt|EBw%m^P9W5Q(+B&v!M7fUM-mN?O`*Ixv1KV4AckDpTj*b?< z)Y`rSRkv;X|LvV$Ytv8|#^1CRLmBZ zG)fU~{0QFq1w`=13-81WKZ4(5u=xel=Q*cs+O@-*T}<$lCMPHFdGo$cPP;8jerGk? z$|EN`TWmM{W?`l16x+F0p^+^#5fHi-^Fg7R4;t+j(rbfoV#wv;aA^5K6m?_2*V_vs zD+(|>#BD=vto8b@2i@JyOVd^RO;;J14#c~MMNZ_LA!i)Rv25I&Z3u6%QkAo+vc!9= zywugLL8D*kMUyKMUT1(Yp?_h%^Ywd`#_W0>P5TEa+5eG}YR#=JdmleMyL8`hJrU{5!?|sfA|571qtg zu|Jry(-u4U47*|Y6c@8)FK*#88CZT8s-3@Y!Oz9To=#({p@O|8@^&^l4mttUeZHM` zkMZ7?w0L~xXjHs3MzU;5O?I$+1msXn%CaF9Y?rYtq0aIxbMT8d4yHx}eZ0oBF{)&+ zOwNpMbFnhul~~9UC=G<^mO)-1hk@m$uovmQ#CXIbN`pocC7BB%k+**3K&OBPvMyK9cMV6=z;I5AQ5kU_=zpkQ79P_lUyDSD7 + + + FluentAssertions + + + + + Initializes a new instance of the class. + + + + + Contains extension methods for custom assertions in unit tests. + + + Provides extension methods for monitoring and querying events. + + + + + Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow + overloads. + + + + + Provides methods for asserting the execution time of a method or property. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Provides methods for asserting the execution time of a method or property. + + A reference to the method or property to measure the execution time of. + + Returns an object for asserting that the execution time matches certain conditions. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Forces enumerating a collection. Should be used to assert that a method that uses the + yield keyword throws a particular exception. + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current . + + + + + Returns an object that can be used to assert the + current nullable . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the + current . + + + + + Returns a object that can be used to assert the current . + + + + + + Returns a object that can be used to assert the methods returned by the + current . + + + + + + Returns a object that can be used to assert the + current . + + + + + + Returns a object that can be used to assert the properties returned by the + current . + + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + Notice that actual behavior is determined by the instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object is equivalent to another object. + + + Objects are equivalent when both object graphs have equally named properties with the same value, + irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. + The type of a collection property is ignored as long as the collection implements and all + items in the collection are structurally equal. + + + A reference to the configuration object that can be used + to influence the way the object graphs are compared. You can also provide an alternative instance of the + class. + + + An optional formatted phrase as is supported by explaining why the + assertion is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Safely casts the specified object to the type specified through . + + + Has been introduced to allow casting objects without breaking the fluent API. + + + + + + Starts monitoring an object for its events. + + Thrown if eventSource is Null. + + + + Asserts that an object has raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised, or + null to refer to all properties. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Asserts that an object has not raised the event for a particular property. + + The object exposing the event. + + A lambda expression referring to the property for which the property changed event should have been raised. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + You must call on the same object prior to this call so that Fluent Assertions can + subscribe for the events of the object. + + + + + Obtains the for a particular event of the . + + The object for which to get an event recorder. + The name of the event. + + + + + Asserts that all occurences of the event originated from the . + + + + + Asserts that at least one occurrence of the event had an object matching a predicate. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the throws an exception. + + A reference to the method or property. + + The type of the exception it should throw. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + Returns an object that allows asserting additional members of the thrown exception. + + + + + Asserts that the does not throw a particular exception. + + The current method or property. + + The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the does not throw any exception at all. + + The current method or property. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Contains a number of methods to assert that a reference type object is in the expected state. + + + + + Asserts that the current object has not been initialized yet. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current object has been initialized. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + The expected type of the object. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is of the specified type . + + + The type that the subject is supposed to be of. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the object is assignable to a variable of type . + + The type to which the object should be assignable. + The reason why the object should be assignable to the type. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Asserts that the is satisfied. + + The predicate which must be statisfied by the . + The reason why the predicate should be satisfied. + The parameters used when formatting the . + An which can be used to chain assertions. + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Asserts that the collection does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any duplicate items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not contain any null items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the elements that are not expected. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection not to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the unexpected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection only contains items that are assignable to the type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to have all elements in the specified . + Elements are compared using their implementation. + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in descending order. Elements are compared + using their implementation. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current collection does not have all elements in ascending order. Elements are compared + using their implementation. + + + + + Asserts that the collection is a subset of the . + + An with the expected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection is not a subset of the . + + An with the unexpected superset. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Assert that the current collection has the same number of elements as . + + The other collection with the same expected number of elements + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection has the supplied at the + supplied . + + The index where the element is expected + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection does not contain the supplied item. + + The element that is not expected to be in the collection + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection shares one or more items with the specified . + + The with the expected shared items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection does not share any items with the specified . + + The to compare to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expectation state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that two collections contain the same items in the same order, where equality is determined using a + predicate. + + + The collection to compare the subject with. + + + A predicate the is used to determine whether two objects should be treated as equal. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains the specified item. + + The expectation item. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains at least one item that matches the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection only contains items that match a predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that the collection does not contain any items that match the predicate. + + A predicate to match the items in the collection against. + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Expects the current collection to contain only a single item matching the specified . + + The predictes that will be used to find the matching items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the dictionary matches the supplied amount. + + The expected number of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the dictionary matches a condition stated by a predicate. + + The predicate which must be statisfied by the amount of items. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary does not contain any items. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains at least 1 item. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The expected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts the current dictionary not to contain all the same key-value pairs as the + specified dictionary. Keys and values are compared using + their implementation. + + The unexpected dictionary + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified key. Keys are compared using + their implementation. + + The expected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + + + Asserts that the dictionary contains all of the specified keys. Keys are compared using + their implementation. + + The expected keys + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified key. + Keys are compared using their implementation. + + The unexpected key + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains the specified value. Values are compared using + their implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + + + Asserts that the dictionary contains all of the specified values. Values are compared using + their implementation. + + The expected values + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified value. + Values are compared using their implementation. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified . + Keys and values are compared using their implementation. + + The expected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified . + Keys and values are compared using their implementation. + + The unexpected + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current dictionary does not contain the specified for the + supplied . Values are compared using their implementation. + + The key for which to validate the value + The value to validate + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the number of items in the collection matches the supplied amount. + + The expected number of items in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the number of items in the collection matches a condition stated by the . + + A predicate that yields the number of items that is expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current collection contains the specified object. Elements are compared + using their implementation. + + An object, or of objects that are expected to be in the collection. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all the same elements in the same order as the collection identified by + . Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + A params array with the expected elements. + + + + Expects the current collection to contain all elements of the collection identified by , + regardless of the order. Elements are compared using their . + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + + + Expects the current collection to contain the specified elements in the exact same order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Expects the current collection to contain the specified elements in any order. Elements are compared + using their implementation. + + An with the expected elements. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Asserts that the collection contains some extra items in addition to the original items. + + An of expectation items. + Additional items that are expectation to be contained by the collection. + + + + Gets the active configuration, + + + + + Gets or sets the mode on how Fluent Assertions will find custom implementations of + . + + + + + Gets or sets the assembly name to scan for custom value formatters in case + is set to . + + + + + Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. + + + + + Maintains the framework-specific services. + + + + + Finds the first index at which the does not match the + string anymore, including the exact casing. + + + + + Finds the first index at which the does not match the + string anymore, accounting for the specified . + + + + + Gets the quoted three characters at the specified index of a string, including the index itself. + + + + + Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. + + + + + Joins a string with one or more other strings using a specified separator. + + + Any string that is empty (including the original string) is ignored. + + + + + Changes the first character of a string to uppercase. + + + + + Determines whether two objects refer to the same property. + + + + + Finds the property by a case-sensitive name. + + + Returns null if no such property exists. + + + + + Determines whether the specified method has been annotated with a specific attribute. + + + true if the specified method has attribute; otherwise, false. + + + + + Defines the modes in which custom implementations of are detected as configured + through . + + + + + Detection is disabled. + + + + + Only custom value formatters exposed through the assembly set in + are detected. + + + + + All custom value formatters in any assembly loaded in the current will be detected. + + + + + Represents a collection of assertion results obtained through a . + + + + + Adds the failures (if any) resulting from executing an assertion within a + identified by a key. + + + + + Returns the closest match compared to the set identified by the provided or + an empty array if one of the results represents a succesful assertion. + + + The closest match is the set that contains the least amount of failures, or no failures at all, and preferably + the set that is identified by the . + + + + + Gets a value indicating whether this collection contains a set without any failures at all. + + + + + Defines a step in the process of comparing two object graphs for structural equivalency. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Records activity for a single event. + + + + + Records raised events for one event on one object + + + + + Store information about a raised event + + Parameters the event was raised with + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + + The object events are recorded from + The name of the event that's recorded + + + + Enumerate raised events + + + + + Enumerate raised events + + + + + + Called by the auto-generated IL, to record information about a raised event. + + + + + The object events are recorded from + + + + + The name of the event that's recorded + + + + + Simple dictionary that uses a to the event source as the key. + This should ensure the Garbage Collector can still clean-up the event source object. + + + + + This class is used to store data about an intercepted event + + + + + Default constructor stores the parameters the event was raised with + + + + + Parameters for the event + + + + + Defines a strategy for handling failures in a . + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Instructs the strategy to handle a assertion failure. + + + + + Discards and returns the failure messages that happened up to now. + + + + + Will throw a combined exception for any failures have been collected since was called. + + + + + Returns the messages for the assertion failures that happened until now. + + + + + Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. + + + + + Gets an object that wraps and executes a conditional or unconditional assertion. + + + + + Represents an implicit or explicit scope within which multiple assertions can be collected. + + + + + Represents the phrase that can be used in as a placeholder for the reason of an assertion. + + + + + Initializes a new instance of the class. + + + + + Specify the condition that must be satisfied. + + If true the assertion will be succesful. + + + + Specify the reason why you expect the condition to be true. + + + A formatted phrase explaining why the condition should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Define the failure message for the assertion. + + + If the contains the text "{reason}", this will be replaced by the reason as + defined through . Only 10 are supported in combination with + a {reason}. + + The format string that represents the failure message. + Optional arguments for the + + + + Discards and returns the failures that happened up to now. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets data associated with the current scope and identified by . + + + + + Indicates that every argument passed into is displayed on a separate line. + + + + + Determines whether data associated with an should be included in the assertion failure. + + + + + Represents a collection of data items that are associated with an . + + + + + Custom version of ICloneable that works on all frameworks. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. + + + + + Throws a framework-specific exception to indicate a failing unit test. + + + + + Gets a value indicating whether the corresponding test framework is currently available. + + + + + Simulates the AppDomain class that is not available in Windows Store apps. + + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ new DateTime(2011, 3, 10)
+
+ you can write 3.March(2011)
+
+ Or even
+
+ 3.March(2011).At(09, 30) +
+ +
+ + + Returns a new value for the specified and + in the month January. + + + + + Returns a new value for the specified and + in the month February. + + + + + Returns a new value for the specified and + in the month March. + + + + + Returns a new value for the specified and + in the month April. + + + + + Returns a new value for the specified and + in the month May. + + + + + Returns a new value for the specified and + in the month June. + + + + + Returns a new value for the specified and + in the month July. + + + + + Returns a new value for the specified and + in the month August. + + + + + Returns a new value for the specified and + in the month September. + + + + + Returns a new value for the specified and + in the month October. + + + + + Returns a new value for the specified and + in the month November. + + + + + Returns a new value for the specified and + in the month December. + + + + + Returns a new value for the specified and . + + + + + Returns a new value for the specified and time with the specified + , and optionally . + + + + + Returns a new value that is the current before the + specified . + + + + + Returns a new value that is the current after the + specified . + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Determines whether this instance can handle the specified value. + + The value. + + true if this instance can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Provides services for formatting an object being used in an assertion in a human readable format. + + + + + A list of objects responsible for formatting the objects represented by placeholders. + + + + + Returns a human-readable representation of a particular object. + + The value for which to create a . + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + Indicates whether the formatter should use line breaks when the specific supports it. + + + A that represents this instance. + + + + + Ensures a custom formatter is included in the chain, just before the default formatter is executed. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of extension methods for floating point . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a floating point value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a double value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts a decimal value approximates another value as close as possible. + + The object that is being extended. + + The expected value to compare the actual value with. + + + The maximum amount of which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the subject is considered equal to another object according to the implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is not equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is less than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the subject is greater than or equal to another object according to its implementation of . + + + The object to pass to the subject's method. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is exactly the same as the value. + + The expected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the integral number value is not the same as the value. + + The unexpected value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is less than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the numeric value is greater than or equal to the specified value. + + The value to compare the current numeric value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is within a range. + + + Where the range is continuous or incremental depends on the actual type of the value. + + + The minimum valid value of the range. + + + The maximum valid value of the range. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + + + Asserts that a value is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable numeric value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Asserts that the value is false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Defines the way compares the expected exception + message with the actual one. + + + + + The message must match exactly, including the casing of the characters. + + + + + The message must match except for the casing of the characters. + + + + + The message must start with the exact text, including the casing of the characters.. + + + The message must match exactly, including the casing of the characters. + + + + + The message must start with the text except for the casing of the characters. + + + + + The message must contain the exact text. + + + + + The message must contain the text except for the casing of the characters. + + + + + The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. + + + + + Contains a number of methods to assert that a is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that the current is exactly equal to the value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equal to the value. + + The unexpected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is before the specified value. + + The that the current value is expected to be before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or before the specified value. + + The that the current value is expected to be on or before. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is after the specified value. + + The that the current value is expected to be after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is either on, or after the specified value. + + The that the current value is expected to be on or after. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the year. + + The expected year of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the month. + + The expected month of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the day. + + The expected day of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the hour. + + The expected hour of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the minute. + + The expected minutes of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the second. + + The expected seconds of the current value. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns a object that can be used to assert that the current + exceeds the specified compared to another . + + + The amount of time that the current should exceed compared to another . + + + + + Returns a object that can be used to assert that the current + is equal to or exceeds the specified compared to another . + + + The amount of time that the current should be equal or exceed compared to + another . + + + + + Returns a object that can be used to assert that the current + differs exactly the specified compared to another . + + + The amount of time that the current should differ exactly compared to another . + + + + + Returns a object that can be used to assert that the current + is within the specified compared to another . + + + The amount of time that the current should be within another . + + + + + Returns a object that can be used to assert that the current + differs at maximum the specified compared to another . + + + The maximum amount of time that the current should differ compared to another . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a is in the correct state. + + + + + Asserts that the is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is equal to the GUID. + + The expected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is not equal to the GUID. + + The unexpected value to compare the actual value with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable boolean value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable boolean value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not false. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is not true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + You can use the for a more fluent way of specifying a . + + + + + Contains a number of methods to assert that a nullable is in the expected state. + + + + + Asserts that the time difference of the current is greater than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than zero. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is equal to the + specified time. + + The expected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is not equal to the + specified time. + + The unexpected time difference + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is less than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the time difference of the current is greater than or equal to the + specified time. + + The time difference to which the current value will be compared + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is within the specified number of milliseconds (default = 20 ms) + from the specified value. + + + Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, + use . + + + + + The expected time to compare the actual value with. + + + The maximum amount of milliseconds which the two values may differ. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Asserts that a nullable value is not null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a nullable value is null. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the value is equal to the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Asserts that an object equals another object using its implementation. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that an object does not equal another object using it's method. + + The unexpected value + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to the exact same object as another object reference. + + The expected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that an object reference refers to a different object than another object reference refers to. + + The unexpected object + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that a is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. + + The expected string. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + + + Asserts that the is one of the specified . + + + The values that are valid. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with + the exception of the casing. + + + The string that the subject is expected to be equivalent to. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not exactly the same as the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to be equivalent to. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a wildcard pattern. + + + The wildcard pattern with which the subject is matched, where * and ? have special meanings. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string matches a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not match a regular expression. + + + The regular expression with which the subject is matched. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts exactly with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string starts with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not start with the specified value, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to start with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end exactly with the specified , + including the casing and any leading or trailing whitespace. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string ends with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not end with the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to end with. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains another (fragment of a) string. + + + The (fragement of a) string that the current string should contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string contains the specified , + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain another (fragment of a) string. + + + The (fragement of a) string that the current string should not contain. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string does not contain the specified string, + including any leading or trailing whitespace, with the exception of the casing. + + The string that the subject is not expected to contain. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is not . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string has the specified length. + + The expected length of the string + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that a string is neither null nor . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or . + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is neither null nor nor white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a string is either null or or white space + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Returns the type of the subject the assertion applies on. + + + + + Dedicated class for comparing two strings and generating consistent error messages. + + + + + Gets or sets a value indicating whether the subject should not match the pattern. + + + + + Gets or sets a value indicating whether the matching process should ignore any casing difference. + + + + + Contains a number of methods to assert that two objects differ in the expected way. + + + You can use the and for a more fluent + way of specifying a or a . + + + + + Asserts that a occurs a specified amount of time before another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Asserts that a occurs a specified amount of time after another . + + + The to compare the subject with. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides the logic and the display text for a . + + + + + Contains a number of methods to assert that an yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the correct state. + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception has a message that matches + depending on the specified matching mode. + + + The expected message of the exception. + + + Determines how the expected message is compared with the actual message. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + + + + Asserts that the thrown exception contains an inner exception of type . + + The expected type of the inner exception. + The reason why the inner exception should be of the supplied type. + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the thrown exception contains an inner exception with the . + + The expected message of the inner exception. + Determines how the expected message is compared with the actual message. + + The reason why the message of the inner exception should match . + + The parameters used when formatting the . + + + + Asserts that the exception matches a particular condition. + + + The condition that the exception must match. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Gets the exception object of the exception thrown. + + + + + Returns the type of the subject the assertion applies on. + + + + + Provides methods for asserting that the execution time of an satifies certain conditions. + + + + + Initializes a new instance of the class. + + The action of which the execution time must be asserted. + + + + Asserts that the execution time of the operation does not exceed a specified amount of time. + + + The maximum allowed duration. + + + A formatted phrase explaining why the assertion should be satisfied. If the phrase does not + start with the word because, it is prepended to the message. + + + Zero or more values to use for filling in any compatible placeholders. + + + + + Provides methods for asserting that the execution time of an object member satifies certain conditions. + + + + + + Initializes a new instance of the class. + + The object that exposes the method or property. + A reference to the method or property to measure the execution time of. + + + + Selection rule that adds all public properties of the subject as far as they are defined on the declared + type. + + + + + Represents a rule that defines which properties of the subject-under-test to include while comparing + two objects for structural equality. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + Type info about the subject. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Selection rule that adds all public properties of the subject based on its run-time type rather than its + declared type. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + General purpose implementation of that uses a predicate to determine whether + this rule applies to a particular property and executes an action to assert equality. + + The type of the subject. + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Defines how a subject's property is compared for equality with the same property of the expectation. + + + Provides details about the subject's property. + + + The value of the subject's property. + + + The value of a property on expectation object that was identified + + + Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. + Returns false if this rule doesn't support the subject's type. + Throws if the rule did support the data type but assertion fails. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides the required information for executing an equality assertion between a subject and an expectation. + + The type of the subject. + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the value of the + + + + + Gets the value of the expectation object that was matched with the subject using a . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Selection rule that removes a particular property from the structural comparison based on a predicate. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides details about the subject's root or nested property. + + + + + Gets the of the property that returned the current object, or null if the current + object represents the root object. + + + + + Gets the full path from the root object until the current object separated by dots. + + + + + Gets a display-friendly representation of the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Represents a selection context of a nested property + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for the exact run-time behavior of a structural equality comparison. + + The type of the subject. + + + + Provides the run-time details of the class. + + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets or sets a value indicating whether or not the assertion must perform a deep comparison. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects + or collections. + + + + + Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, + and includes the entire object graph. The names of the properties between the subject and expectation must match. + + + + + Adds all public properties of the subject as far as they are defined on the declared type. + + + + + Adds all public properties of the subject based on its run-time type rather than its declared type. + + + + + Tries to match the properties of the subject with equally named properties on the expectation. Ignores those + properties that don't exist on the expectation. + + + + + Requires the expectation to have properties which are equally named to properties on the subject. + + + + + + Excludes the specified (nested) property from the structural equality check. + + + + + Excludes a (nested) property based on a predicate from the structural equality check. + + + + + Includes the specified property in the equality check. + + + This overrides the default behavior of including all declared properties. + + + + + The assertion to execute when the predicate is met. + + + + + Causes the structural equality check to include nested collections and complex types. + + + + + Causes the structural equality check to exclude nested collections and complex types. + + + Behaves similarly to the old property assertions API. + + + + + Causes the structural equality check to ignore any cyclic references. + + + By default, cyclic references within the object graph will cause an exception to be thrown. + + + + + Clears all selection rules, including those that were added by default. + + + + + Clears all matching rules, including those that were added by default. + + + + + Adds a selection rule to the ones already added by default, and which is evaluated after all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules. + + + + + Adds a matching rule to the ones already added by default, and which is evaluated before all existing rules + + + + + Causes all collections to be compared in the order in which the items appear in the expectation. + + + + + Causes the collection identified by to be compared in the order + in which the items appear in the expectation. + + + + + Causes the collection identified by the provided to be compared in the order + in which the items appear in the expectation. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Gets an ordered collection of selection rules that define what properties are included. + + + + + Gets an ordered collection of matching rules that determine which subject properties are matched with which + expectation properties. + + + + + Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with + expectation properties. + + + + + Gets an ordered collection of rules that determine whether or not the order of collections is important. By default, + ordering is irrelevant. + + + + + Gets value indicating whether the equality check will include nested collections and complex types. + + + + + Gets value indicating how cyclic references should be handled. By default, it will throw an exception. + + + + + Defines additional overrides when used with + + + + + Allows overriding the way structural equality is applied to (nested) objects of tyoe + + + + + Allows overriding the way structural equality is applied to particular properties. + + + A predicate based on the of the subject that is used to identify the property for which the + override applies. + + + + + Defines a rule that is used to determine whether the order of items in collections is relevant or not. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + An ordering rule that basically states that the order of items in all collections is important. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Represents a rule for determining whether or not a certain collection within the object graph should be compared using + strict ordering. + + + + + Determines if ordering of the property refered to by the current is relevant. + + + + + Collection of s. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Determines whether the rules in this collection dictate strict ordering during the equivalency assertion on + the collection pointed to by . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Indication of how cyclic references should be handled when validating equality of nested properties. + + + + + Cyclic references will be ignored. + + + + + Cyclic references will result in an exception. + + + + + Gets a value indicating whether this step can handle the verificationScope subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Executes a single equivalency assertion on two collections, optionally recursive and with or without strict ordering. + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Selection rule that removes a particular property from the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a rule that defines how to map the properties from the subject-under-test with the properties + on the expectation object. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Selection rule that includes a particular property in the structural comparison. + + + + + Adds or removes properties to/from the collection of subject properties that must be included while + comparing two objects for structural equality. + + + A collection of properties that was prepopulated by other selection rules. Can be empty. + + The collection of properties after applying this rule. Can contain less or more than was passed in. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Provides information on a particular property during an assertion for structural equality of two object graphs. + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the value of the + + + + + Requires the expectation object to have a property with the exact same name. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Provides methods for selecting one or more properties of an object and comparing them with another object. + + + + + Includes all properties of when comparing the subject with another object using . + + + + + Includes all properties of including those of the run-time type when comparing the subject + with another object using . + + + + + Includes all properties of when comparing the subject with another object using , + except those that the other object does not have. + + + + + Perform recursive property comparison of the child properties for objects that are of incompatible type. + + + Indication of how cyclic references in the nested properties should be handled. By default this will result in an + exception, but if is specified, cyclic references will just be ignored. + + + + + Includes all properties of when comparing the subject with another object using , + except those specified using a property expression. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Excludes the properties specified by the from the comparison. + + A single property expression to exclude. + Optional list of additional property expressions to exclude. + + + + Includes only those properties of when comparing the subject with another object using + that were specified using a property expression. + + A single property expression to include. + Optional list of additional property expressions to include. + + + + Asserts that the previously selected properties of have the same value as the equally named + properties of . + + The object to compare the current object with + + Property values are considered equal if, after converting them to the requested type, calling + returns true. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Gets the of the property that returned the current object, or + null if the current object represents the root object. + + + + + Gets the full path from the root object until the current property, separated by dots. + + + + + Gets a textual description of the current property based on the . + + + + + Gets the value of the + + + + + Gets the value of the . + + + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + + + Zero or more objects to format using the placeholders in . + + + + + Gets a value indicating whether the current context represents the root of the object graph. + + + + + Gets the compile-time type of the current object. If the current object is not the root object, then it returns the + same as the property does. + + + + + Gets the run-time type of the current object. + + + + + Is responsible for validating the equality of one or more properties of a subject with another object. + + + + + Provides access the list of steps that are executed in the order of appearance during an equivalency test. + + + + + Keeps track of objects and their location within an object graph so that cyclic references can be detected + and handled upon. + + + + + Determines whether the specified object reference is a cyclic reference to the same object earlier in the + equivalency validation. + + + The behavior of a cyclic reference is determined byt he constructor + parameter. + + + + + Creates a new object that is a copy of the current instance. + + + + A new object that is a copy of this instance. + + + + + Represents an object tracked by the including it's location within an object graph. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Gets a value indicating whether this step can handle the current subject and/or expectation. + + + + + Applies a step as part of the task to compare two objects for structural equality. + + + Should return true if the subject matches the expectation or if no additional assertions + have to be executed. Should return false otherwise. + + + May throw when preconditions are not met or if it detects mismatching data. + + + + + Finds a property of the expectation with the exact same name, but doesn't require it. + + + + + Attempts to find a property on the expectation that should be compared with the + during a structural equality. + + + Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, + simply return null. + + + The of the subject's property for which a match must be found. Can never + be null. + + + The expectation object for which a matching property must be returned. Can never be null. + + + The dotted path from the root object to the current property. Will never be null. + + + Returns the of the property with which to compare the subject with, or null + if no match was found. + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Extension methods on to allow for a more fluent way of specifying a . + + + Instead of
+
+ TimeSpan.FromHours(12)
+
+ you can write
+
+ 12.Hours()
+
+ Or even
+
+ 12.Hours().And(30.Minutes()). +
+ +
+ + + Returns a based on a number of milliseconds. + + + + + Returns a based on a number of seconds. + + + + + Returns a based on a number of seconds, and add the specified + . + + + + + Returns a based on a number of minutes. + + + + + Returns a based on a number of minutes, and add the specified + . + + + + + Returns a based on a number of hours. + + + + + Returns a based on a number of hours, and add the specified + . + + + + + Returns a based on a number of days. + + + + + Returns a based on a number of days, and add the specified + . + + + + + Convenience method for chaining multiple calls to the methods provided by this class. + + + 23.Hours().And(59.Minutes()) + + + + + Extension methods for getting method and property selectors for a type. + + + + + Returns the types that are visible outside the specified . + + + + + Returns a method selector for the current . + + + + + Returns a method selector for the current . + + + + + Returns a property selector for the current . + + + + + Returns a property selector for the current . + + + + + Static class that allows for a 'fluent' selection of the types from an . + + + AllTypes.From(myAssembly)
+ .ThatImplement<ISomeInterface>
+ .Should()
+ .BeDecoratedWith<SomeAttribute>() +
+
+ + + Returns a for selecting the types that are visible outside the + specified . + + The assembly from which to select the types. + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class. + + The method to assert. + + + + Initializes a new instance of the class. + + The methods to assert. + + + + Asserts that the selected methods are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of methods of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select methods. + + + + Initializes a new instance of the class. + + The types from which to select methods. + + + + Only select the methods that return the specified type + + + + + Only select the methods that are decorated with an attribute of the specified type. + + + + + The resulting objects. + + + + + Determines whether the specified method has a special name (like properties and events). + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the methods that are public or internal. + + + + + Only select the methods without a return value + + + + + Contains assertions for the objects returned by the parent . + + + + + Initializes a new instance of the class, for a single . + + The property to assert. + + + + Initializes a new instance of the class, for a number of objects. + + The properties to assert. + + + + Asserts that the selected properties are virtual. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected properties have a setter. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the selected methods are decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Returns the type of the subject the assertion applies on. + + + + + Allows for fluent selection of properties of a type through reflection. + + + + + Initializes a new instance of the class. + + The type from which to select properties. + + + + Initializes a new instance of the class. + + The types from which to select properties. + + + + Only select the properties that are decorated with an attribute of the specified type. + + + + + Only select the properties that return the specified type + + + + + The resulting objects. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Only select the properties that have a public or internal getter. + + + + + Contains a number of methods to assert that a meets certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current type is equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is equal to the specified type. + + The expected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Creates an error message in case the specifed type differs from the + type. + + + An empty if the two specified types are the same, or an error message that describes that + the two specified types are not the same. + + + + + Asserts that the current type is not equal to the specified type. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current type is not equal to the specified type. + + The unexpected type + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that all s in a + meet certain expectations. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current is decorated with the specified . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is decorated with an attribute of type + that matches the specified . + + + The predicate that the attribute must match. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the object which value is being asserted. + + + + + Allows for fluent filtering a list of types. + + + + + The resulting objects. + + + + + Determines whether a type is a subclass of another type, but NOT the same type. + + + + + Determines whether a type implements an interface (but is not the interface itself). + + + + + Determines whether a type is decorated with a particular attribute. + + + + + Determines whether the namespace of type is exactly . + + + + + Determines whether the namespace of type is starts with . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the attribute. + + The expected attribute + + + + Asserts that the current equals the attribute. + + The expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + + + Asserts that the current does not equal the attribute, + using its implementation. + + The unexpected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + + + Asserts that the current equals the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + + + Asserts that the current does not equal the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + + + Asserts that the current is equivalent to the document, + using its implementation. + + The expected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + + + Asserts that the current is not equivalent to the document, + using its implementation. + + The unexpected document + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + + + Asserts that the current has a root element with the specified + name. + + The name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a root element with the specified + name. + + The full name of the expected root element of the current document. + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the element of the current has a direct + child element with the specified name. + + + The full name of the expected child element of the current document's Root element. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Contains a number of methods to assert that an is in the expected state. + + + + + Initializes a new instance of the class. + + + + + Asserts that the current equals the element. + + The expected element + + + + Asserts that the current equals the element. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + + + Asserts that the current does not equal the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + + + Asserts that the current is equivalent to the element, + using its implementation. + + The expected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + + + Asserts that the current is not equivalent to the element, + using its implementation. + + The unexpected element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has the specified value. + + The expected value + + + + Asserts that the current has the specified value. + + The expected value + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has an attribute with the specified + and . + + The name of the expected attribute + The value of the expected attribute + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current has a direct child element with the specified + name. + + The name of the expected child element + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Returns the type of the subject the assertion applies on. + + + + + Indicates whether the current can handle the specified . + + The value for which to create a . + + true if the current can handle the specified value; otherwise, false. + + + + + Returns a that represents this instance. + + The value for which to create a . + + + A collection of objects that + + + The level of nesting for the supplied value. This is used for indenting the format string for objects that have + no override. + + + A that represents this instance. + + + + + Contains a number of methods to assert that an asynchronous method yields the expected result. + + + + + Asserts that the current throws an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw any exception. + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Asserts that the current does not throw an exception of type . + + + A formatted phrase as is supported by explaining why the assertion + is needed. If the phrase does not start with the word because, it is prepended automatically. + + + Zero or more objects to format using the placeholders in . + + + + + Gets the that is being asserted. + + +
+
diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..4763e1382ef410bb1e3a5e89b7a06861879793c8 GIT binary patch literal 488448 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 z z;iv~v_v5+s`!6u~Rav5vAtPSVC`h>OV)Bersh${_D;QGapv(c_$`oJ@0Id{Y4gl>G zU=9EqQh+%CY)k>>0B}_bFbDM)|9U*%mkY1l36P^qXp9G2qV{Q2FAk_{zJ0o!g|4$` z&NBop%bAZ22}R%H1^ggaD&$@@J8y@mof5(=kt2$1{u`OH9NM`O!mb1N3)k81h+0d%7irxg3&EPYstNyk2;`Ty*(+lY<(~}q= zcKd8f+ANU4W8@NzO)pAg3@XMuSa3EAWbhbkBo!S(H{zmxFg#}C{9+>5IGY2hlC~6i znTe~!i(R!GjvN;xOQ>Fcipd*}*l{+RMafxnVH(3Ar+pk8b+!Fhwg+4rpH`}TJVcJg zZPDY}Gn}I$?xikBmWMk*f148|ah$3Yw4TTu5nN5J^WpTADonB z3Uj`sPN~hc`6;C`eE{cd@uKw=ZbxWAKDJ4fT-*<9Q^=NJL>*!DAJaHFHVEjSbT=$k zRHCK@$+}J}wrpSc6dN8_V!VQ+h|*NO)=Le%lwO?$zQMq|&jsIUU~!n& z9|TdJmE@xqHoD!gFId=fF`&NzfLyKdCLF$~Hs z?dtu=Conc8UYY?v!@%NI95{%VWkM4R7598SrvtNl{2B`r3q3#VCJPf6J%6M=XklWT z=ZAgM!o>1l&%SOe8X3q~BwJ>cO=C|Ph3p<0bS%_9! zr0k5H6()P8`XWD~N02Bp_=%*}E{fe@fejczM_mdtNI48&YG#|#1T*Q)h5KO7kOJT} z_RPgg?zXH>p*~G4gxK_XR$5w+2tF^vATh?h0AFC3yfWW9mn1Hp4~(>=cTrgk|$x{GHmG*5t4*CBw@ ziYj;pb{EgU%0!9yS2tQI7pn^S`rMnnN#s?f$lLMB_1yU3j+d3r)W?7$DuG88k3Y_( zA#L8q7mWFCdug}ZEZ|TVvAK);8oyuLXOM1G`b;BGrAlL>5F_?)YUYP>S0pL|Bz#IVnDFt{(E#8;T~V}VvSy_`aJ9}MHupk`^z@nZWjVl|>t`*Oa0Wez%DfP-zp z{v_I3Vk3@KgN(g~JST8_iXrD8;`%9MH@xG4wLV)enka zN}5gAQyW9JGYM`dl(|_TgU1{eHFP%A=xtx2Y88hM{3PXZ`qLn`%ixAIgR?pr2((E* z-3$i9QgS6(43-+t;hD~soP~TmPMYzdYGDSJ+ZkcNa57=zhj2NmkZ^U4=M~GixF=j` z?1{*MGpR-fR4Wco4glUlTSg{JX;g~1O4;19_4I+#w%YBTEtIcCxv>Wp=ByUnCE9oi zrRy$HvkDn~p%Ri)WQ7vVa++Z?R?g;BW?n4QUh0*(D;~@FebvGR`##O>rL;#Gr0=g6 zuC)J|nJB9ARNCuCq6f+P&oH}DwDCyZK!hlH6Tf)}kCNAG_MWJI=ESYxpz)Cm9*ET& zm8Q@(4U;!^Q^W@mx3ApX1x?YnS$20QklSI(HaR5Csd2H(dw6nbd=l9;Pm7THzlS*O z7t!>jpM&ql)1su0FAB)XLVYKFwc>-xM#3SAVWE9{x11^>pxFhbN!BZg?h=+TG#4L; z51JzWe-*gI?zU>k#lk+ifAV5#pfkaS`L6Ex*q4R5EyPEo6kOJD^T5+0UI84D1%>RZp>nYBRq{szpx&csgJpv?VQ|@KVAZS36!A(TJ1_Og5h@eYOw z&B=MARIPN!1pL!LO{+bbL5^D*;@xNVPlt2(h6YYOqFXC(srJ;X$S!-5Yv_xfV(X&k z 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

(Nf9* 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 literal 0 HcmV?d00001 diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.xml b/dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.xml new file mode 100644 index 00000000000..0aa4def6232 --- /dev/null +++ b/dep/Newtonsoft.Json.6.0.1/lib/net20/Newtonsoft.Json.xml @@ -0,0 +1,9054 @@ + + + + Newtonsoft.Json + + + +

+ Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Provides a set of static (Shared in Visual Basic) methods for + querying objects that implement . + + + + + Returns the input typed as . + + + + + Returns an empty that has the + specified type argument. + + + + + Converts the elements of an to the + specified type. + + + + + Filters the elements of an based on a specified type. + + + + + Generates a sequence of integral numbers within a specified range. + + The value of the first integer in the sequence. + The number of sequential integers to generate. + + + + Generates a sequence that contains one repeated value. + + + + + Filters a sequence of values based on a predicate. + + + + + Filters a sequence of values based on a predicate. + Each element's index is used in the logic of the predicate function. + + + + + Projects each element of a sequence into a new form. + + + + + Projects each element of a sequence into a new form by + incorporating the element's index. + + + + + Projects each element of a sequence to an + and flattens the resulting sequences into one sequence. + + + + + Projects each element of a sequence to an , + and flattens the resulting sequences into one sequence. The + index of each source element is used in the projected form of + that element. + + + + + Projects each element of a sequence to an , + flattens the resulting sequences into one sequence, and invokes + a result selector function on each element therein. + + + + + Projects each element of a sequence to an , + flattens the resulting sequences into one sequence, and invokes + a result selector function on each element therein. The index of + each source element is used in the intermediate projected form + of that element. + + + + + Returns elements from a sequence as long as a specified condition is true. + + + + + Returns elements from a sequence as long as a specified condition is true. + The element's index is used in the logic of the predicate function. + + + + + Base implementation of First operator. + + + + + Returns the first element of a sequence. + + + + + Returns the first element in a sequence that satisfies a specified condition. + + + + + Returns the first element of a sequence, or a default value if + the sequence contains no elements. + + + + + Returns the first element of the sequence that satisfies a + condition or a default value if no such element is found. + + + + + Base implementation of Last operator. + + + + + Returns the last element of a sequence. + + + + + Returns the last element of a sequence that satisfies a + specified condition. + + + + + Returns the last element of a sequence, or a default value if + the sequence contains no elements. + + + + + Returns the last element of a sequence that satisfies a + condition or a default value if no such element is found. + + + + + Base implementation of Single operator. + + + + + Returns the only element of a sequence, and throws an exception + if there is not exactly one element in the sequence. + + + + + Returns the only element of a sequence that satisfies a + specified condition, and throws an exception if more than one + such element exists. + + + + + Returns the only element of a sequence, or a default value if + the sequence is empty; this method throws an exception if there + is more than one element in the sequence. + + + + + Returns the only element of a sequence that satisfies a + specified condition or a default value if no such element + exists; this method throws an exception if more than one element + satisfies the condition. + + + + + Returns the element at a specified index in a sequence. + + + + + Returns the element at a specified index in a sequence or a + default value if the index is out of range. + + + + + Inverts the order of the elements in a sequence. + + + + + Returns a specified number of contiguous elements from the start + of a sequence. + + + + + Bypasses a specified number of elements in a sequence and then + returns the remaining elements. + + + + + Bypasses elements in a sequence as long as a specified condition + is true and then returns the remaining elements. + + + + + Bypasses elements in a sequence as long as a specified condition + is true and then returns the remaining elements. The element's + index is used in the logic of the predicate function. + + + + + Returns the number of elements in a sequence. + + + + + Returns a number that represents how many elements in the + specified sequence satisfy a condition. + + + + + Returns an that represents the total number + of elements in a sequence. + + + + + Returns an that represents how many elements + in a sequence satisfy a condition. + + + + + Concatenates two sequences. + + + + + Creates a from an . + + + + + Creates an array from an . + + + + + Returns distinct elements from a sequence by using the default + equality comparer to compare values. + + + + + Returns distinct elements from a sequence by using a specified + to compare values. + + + + + Creates a from an + according to a specified key + selector function. + + + + + Creates a from an + according to a specified key + selector function and a key comparer. + + + + + Creates a from an + according to specified key + and element selector functions. + + + + + Creates a from an + according to a specified key + selector function, a comparer and an element selector function. + + + + + Groups the elements of a sequence according to a specified key + selector function. + + + + + Groups the elements of a sequence according to a specified key + selector function and compares the keys by using a specified + comparer. + + + + + Groups the elements of a sequence according to a specified key + selector function and projects the elements for each group by + using a specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. + + + + + Groups the elements of a sequence according to a key selector + function. The keys are compared by using a comparer and each + group's elements are projected by using a specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. The elements of each group are projected by using a + specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. The keys are compared by using a specified comparer. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. Key values are compared by using a specified comparer, + and the elements of each group are projected by using a + specified function. + + + + + Applies an accumulator function over a sequence. + + + + + Applies an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value. + + + + + Applies an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value, and the + specified function is used to select the result value. + + + + + Produces the set union of two sequences by using the default + equality comparer. + + + + + Produces the set union of two sequences by using a specified + . + + + + + Returns the elements of the specified sequence or the type + parameter's default value in a singleton collection if the + sequence is empty. + + + + + Returns the elements of the specified sequence or the specified + value in a singleton collection if the sequence is empty. + + + + + Determines whether all elements of a sequence satisfy a condition. + + + + + Determines whether a sequence contains any elements. + + + + + Determines whether any element of a sequence satisfies a + condition. + + + + + Determines whether a sequence contains a specified element by + using the default equality comparer. + + + + + Determines whether a sequence contains a specified element by + using a specified . + + + + + Determines whether two sequences are equal by comparing the + elements by using the default equality comparer for their type. + + + + + Determines whether two sequences are equal by comparing their + elements by using a specified . + + + + + Base implementation for Min/Max operator. + + + + + Base implementation for Min/Max operator for nullable types. + + + + + Returns the minimum value in a generic sequence. + + + + + Invokes a transform function on each element of a generic + sequence and returns the minimum resulting value. + + + + + Returns the maximum value in a generic sequence. + + + + + Invokes a transform function on each element of a generic + sequence and returns the maximum resulting value. + + + + + Makes an enumerator seen as enumerable once more. + + + The supplied enumerator must have been started. The first element + returned is the element the enumerator was on when passed in. + DO NOT use this method if the caller must be a generator. It is + mostly safe among aggregate operations. + + + + + Sorts the elements of a sequence in ascending order according to a key. + + + + + Sorts the elements of a sequence in ascending order by using a + specified comparer. + + + + + Sorts the elements of a sequence in descending order according to a key. + + + + + Sorts the elements of a sequence in descending order by using a + specified comparer. + + + + + Performs a subsequent ordering of the elements in a sequence in + ascending order according to a key. + + + + + Performs a subsequent ordering of the elements in a sequence in + ascending order by using a specified comparer. + + + + + Performs a subsequent ordering of the elements in a sequence in + descending order, according to a key. + + + + + Performs a subsequent ordering of the elements in a sequence in + descending order by using a specified comparer. + + + + + Base implementation for Intersect and Except operators. + + + + + Produces the set intersection of two sequences by using the + default equality comparer to compare values. + + + + + Produces the set intersection of two sequences by using the + specified to compare values. + + + + + Produces the set difference of two sequences by using the + default equality comparer to compare values. + + + + + Produces the set difference of two sequences by using the + specified to compare values. + + + + + Creates a from an + according to a specified key + selector function. + + + + + Creates a from an + according to a specified key + selector function and key comparer. + + + + + Creates a from an + according to specified key + selector and element selector functions. + + + + + Creates a from an + according to a specified key + selector function, a comparer, and an element selector function. + + + + + Correlates the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. + + + + + Correlates the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. A + specified is used to compare keys. + + + + + Correlates the elements of two sequences based on equality of + keys and groups the results. The default equality comparer is + used to compare keys. + + + + + Correlates the elements of two sequences based on equality of + keys and groups the results. The default equality comparer is + used to compare keys. A specified + is used to compare keys. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Represents a collection of objects that have a common key. + + + + + Gets the key of the . + + + + + Defines an indexer, size property, and Boolean search method for + data structures that map keys to + sequences of values. + + + + + Represents a sorted sequence. + + + + + Performs a subsequent ordering on the elements of an + according to a key. + + + + + Represents a collection of keys each mapped to one or more values. + + + + + Determines whether a specified key is in the . + + + + + Applies a transform function to each key and its associated + values and returns the results. + + + + + Returns a generic enumerator that iterates through the . + + + + + Gets the number of key/value collection pairs in the . + + + + + Gets the collection of values indexed by the specified key. + + + + + See
issue #11 + for why this method is needed and cannot be expressed as a + lambda at the call site. + + + + + See issue #11 + for why this method is needed and cannot be expressed as a + lambda at the call site. + + + + + This attribute allows us to define extension methods without + requiring .NET Framework 3.5. For more information, see the section, + Extension Methods in .NET Framework 2.0 Apps, + of Basic Instincts: Extension Methods + column in MSDN Magazine, + issue Nov 2007. + + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..a87bedd4e60d5856699cde36a3945c6557f7dac6 GIT binary patch literal 425472 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 z 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 literal 0 HcmV?d00001 diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.xml b/dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.xml new file mode 100644 index 00000000000..e539581f475 --- /dev/null +++ b/dep/Newtonsoft.Json.6.0.1/lib/net35/Newtonsoft.Json.xml @@ -0,0 +1,8197 @@ + + + + Newtonsoft.Json + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net40/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/net40/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..339e470c33c888bdc289ece964d6334f175d4b80 GIT binary patch literal 481792 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
  • aqg#7jtIW_|@O+#XkI-MTD=8W>Lo z8!YrQgy98lnR8%VIBdq5%1Dt>eBq2=UeN6{+(Q{Tm%^q6-*~u$P2vm0ke;|F#mpFB z+``I}Ncp;KfRlokMvt@0%;hf-WQ!1bb5|Ax2i|}~?R5X-i(*Z!yNRraQ%kzcgx9Oy z=c*$N+7j4w%(6EK3UsliHrWf9JeVuOm^f!9qBOowh2%IXie|3B1%tm*BtD`@xz#fB zQi~Fv#e(ay-ajC~5XZRvLHu{U_`!G3>re3$<_Gw3^g6$b&iDKB?@6kBM}2B;`WmzH zOX|KGPt;zjP0Ia)N{GlH6;3V5N7oPCe>i=;pArFIZddB$?dV3p*?NRqtvoftOK1J^ zQRqeDl-pSuH+f@jW%}yW68H4xNjzB$+K~6DCD>y@82F-%fNykSRZJ~~E@%dypF_+3 z7BhHC%aw~hTWU1IHYVyz4o;TxPAR-Im>39YhuPq71b% z6`jFFm%JjA%ucl)&E~m6S#=ucE5&HAB5%M*i7?Vk0%b;#<|G+Km6%8;LUOwsF5)Z% zfg6OT3VjVy?f}x3x1Go|3JYb<)I8=glEMeA={yq+^h4*{=?0DrGq7I9rkC_UzBpeDk za(SJ4+d(OmJLlz#7Agzn4sDXU=Fk&BDiBMPPOdD>=d;WF@GXQX?56_`mdhsnOd&-y z9nV1}tg}smAe*|~HxI+8rXUcRJO?Hb8XTe7JcO==vIsCr{L_;1XsC04#Xt3Knrq6%^UXgVC4gMR&cn zDLn2ZR`A&V=HW|T+Xrie-&GMXeb|P+?8Z(I111->d($Cui&H~Yo)P9HZsIN9cfRkUV<{r zB&9N&9DGWfdL4_c;cYJiJ0c~^8`M$~tMoz=kjj;|{3*sPcA_pTpSkH6x`pfdah|fY z#jB9gE1O9%GG=E3F_NcQrvm|lH3>qQB3h)b=W|SiDjN(u(dQyiwdPbB#*!g^g+n)` zZ7wR83024fjLgd~xVROZS-WNzJ*Ko8Se@tRR>ZEC(MC3Ss4I-zJhkK5WnEKcfKoN) z{4pG8+k&I3So(vUUV^0du}TbNfcXpwq`GX4taE716Ncg?{d@+EgYt2WG@9<}8b4LL z7VDCkcRv|k6BShCsE8$lr zdc?>$OGZ`F2Tbq?K++LDmrXf9AZ11%Li@{)YpeavPwGrG_-HoEyH9ZNJ(ttHBp+40 zL38i2gO{bd1Xie~V5ru*k2*6yyLe^gs%MDk8^((qQ?o&G%&+1bkvQM!X0XS3)h*86 z(7RM1$uzLSi_zW8T%FPooA{_>wzh!#?{KtxSsuIvS5P$Wzjrj_RoN#&3z?@4YNm{$ zd%z0%TbQWDArNiCOeUjJh34k~10wb5f0L(u3RnK(6HSb&UYa9G zLiC1hk);)g2RE(Xv2?R^w0Q37?Bbav`Md*0Z0Wl4L2dLUd>v^PT?mHu%Q%M4qrkoj zN?K96v=qK>2_;m(nq9_5z#`Q>dp|Z0Ph^RhpM446Xa(rHP6t}Z7^KsynR!+ayQDB0 zb%FL}qeCZ{6cAKWdZ1qt_RNj5YWgaoK!w}{2dyznZJA>u)_(-+9=5vUO$=^j%&i>M zfdIjRI%vYk4nB(}5>Tm@6KH5xI9un$0Rr`a?TU4S6lV)&w98RFvnnU`7|ayQ>&ETe z+?bm?Na`Es&!dp72o@(lXJ`1OkzuGk$Y=|=KJuNL~n#uJUskaUsBxN#z>aoKl z+*11_goRc}>*QHrW_ojq2b4N7_y;_{z*a?Nse^FH^gZu%a_NU|Yl}mKFg#I=bY}Bi zDIF74qkIopH>}0z^x~D%!n3okXM9YUvg|r|pRm9NIb*{coH*z+WrMGY;a!qtpTT8y zXJY4=^#!x&rHmyD*T@hL(3C6cyhi<+F02jC)w00Tan6t^InaI46Xj*aulFc!YxO!h zJ+FSsmH=A!-Y)6_x0IeP7ZEEY1p<-{Vr-EM&s9Q^Ms%qCd|<_%FVa^_gXG0Ra1g~< zm(H!oX&srR=EjLm=+~O5CMYd~f~K#*P9Tfg+WaxLVU#sGsoP;o7U* zsSdyzc`C7GV1j{ht)h3PxT`hW(E#=9lmKYjE~dLjw-UH#$uf^Y<>1(uHP9Lir@r5u z0Mw43;{G0$Csow5YNxZa+F6v=uU*q{mL$U`Du^g*Mp4FDWjUEqmpO5T2+svcBtk`4 zz2t7g$!3NhCbTRAs+20Sg!~O|Bta(ZF7rd&5?YoIRSFnOa#QFP-P{(|NA@YXWF_OJ2FVktvX`275(YDv#*Swp zy2I9LmQ=E{DsA{WIR`m-!Ug6Quj8ZQb3n0ddijZCqpPnzO}b`Usiw@hYfy$W=}z5B zw))(XZg=>WuvfD(?N)Wa#`a&_C$lXk-JfCMr?^>YWSdo&XbxJntbZ-wP#SgIpSF5l&(NPc647XbOuhtR+ghy~ET1Zd~BrdlOepVL?0M+Tn z?qjqo-B?<_7TBU$iR1uKi1syMMy|qsfE)LyGl0ms!JK&%QU^g3p_HH=+W}@>npz5J z))4d?*`5V|EGB|IU!J?Ns!NcvWKiDXS}_5Lp26pJiwWEVfI4!uBx!0HE9Qk-88VKk zXb;uF`tA*8A&w3U;mx||ab8T|HC*%o+yypuo#DC4s$+Q zQ8RhwtcB64f%(B}Vxu{?o=1Ge|B=^mWKf^PiBUt+33QT?<)Hc9k|p86n4K~T)ZA{HpHl!2jM0W{p2 z5n$jb2P@8!*T+$p=y-F};;7UAV%6QZokE{b?aslaoS$UYB)4Ek83PVL>f z&YCSSOe-v`@VPYeHa|zRa`qPDRr0~rK`d9NYHLfeHCW$eW}aAlX%1ehVkse*pb)T* zS@dH@=eCC^k3JhDE>Ht-SS^E69)sOK;w^}b$W|Cw^d8~H9ra$TkQ%_^!!s8y9B@Y; zK6t?nBpTX7@$h|(=%TvLU(aHLe&JbGUsTV2EO5XBjy^ngfqt3L_>Mk2e_i zb&kU!;r=AyNEz&Yvh0ug&>0to2bI0E%X%(6(38@)@)TXGM=__x7CNIb#KWBLQq4bc zVCT9pcD|#FVKv1FbTr#`;5)hslc;Psa`S;v=(5y#Bw*oz1Pc#>O<~<|bcwlvOesYS zdSnuP0hz?0PhgE90hOkd2WD_!W2^upnHB}n0uUKxbXfocK#SlqzLPTW5hxEPpwxtI zVfKNW9p@U!;Zh^na?a$oXg%KX;NedlIsEAHrdlfz3%UV_fwHQ@Mo#0s5lRA5u$I&w^ldJ=lfd<+vhz8O>)qOu~Sa_-# ziti{S@%I4}*jp9bs9G)Moyq{0>VXFcd0KQ`OWCWW;oH+PSLN(&s8rI%S67xE!zUR) zL=R72z~ydrSdQ0Zg#;k|=DD}@3F6HJNr6G`lq-ZzmJ|}3QC#wnqrpHnCWY%l+#iRO zoLwd7)#tca{)HL0AH9PQ}n;oZ@3 zSiR^vUiVy=Yu!Z~tMSWV$B_OoYDGt|Za z-7HosRYFqXgM7r{K5D14)Gr~>{S zdhZ2lh?u?U>Ws?ds#8JfaM)uO9R|5kRY9v)>BA+xP|0TtIEZ-hcMB*K9gt^9V7c}Z z9|BRzJ8*v3N{`CQLAKtNYBr=~U>>C9#x};0Fg|IygBvS{@q}#VCp6%q=8qK<-22_N zmo`=d2%xlvBO5FJpo}7q)vUsaYkmo+KDwXA076l7*Ed!RGwP1}h*@ zdguX$>m|5m#Hy}#Mu4{qkX3dRWiL2phC^Ldj`O1oipr^4{hFQnW&0KuGX_>Y#p;eg z#>BYDRY?^tC;Wk>2zR;s)bn!r!K>{0iCpGsN7DoZSR|N15eM8SrHScTxIZke_!()} zUSgL@`${&viWf@ji`il|OxEJ62?m0r=N{%a0VB(cHzjo{2ky*rM5wJLWZmO8=p_t$ zG8AIEoOumc)C!<4QvoCW9w>}d#!DMr+vn1q3nz>aX=0v>)~>%i6A z4C4;ymS{bRJj5>oaYCc237;*5$J~TmJqzm^Y*OlE0``ONKIpC!!jg{9&=t6dY66KQEs0@@|1GfTVF_64O~ z=Syd!`JC=aQ$*!jgd!OfJsa&&om~tvIhQ>o#03fy41z)} zBwWGU`aZePhoExNN+e&li|OH218+sR9N+^tbu4S)WmvDnV9hxV=Q`{j`Hg!X+V{)P z5QVc5{$*;(Pc=KY^6U~A&J{`pQ?Csu&%wMR04c^?yr{{02=SGd8F)2NDHYx}#sXqA zsHHkg<$&k7bcijY?J!)!A1FmkLjWHe#T9K&|-F&3t zQhC=A5|fy#pnccm?hnup4OYY%&n+EaTBu=bfEe+D!N;JW-`1qp57TXzlXZ%Uivvy9 z90*_qY#IA^S2e_}fu0>iHaAPb_MsNw##v(0Yp&dx5WUlH6v%#sUW{4K*>fJ49fLjR zD0V1}kHWfBwwW9Qn)wSzXTcHl-Ui#PBAyR8_;}bxHw|OQu;Yz&R#@Bl6DDH$@h;_J z9Dz7D@zr(SQsp5BfDJCi8BtAt=2pRliFk!=&BAx5;zxTi4H0$9yF$Il43mN zS}$H;#A(<$gNG!k+~^wyAk-yPtEX(dI5M)`|J3aA!kkAbNWctQy3wVtGjC6z#I1em073Btxa#*j0< zuu8HAtmRTm8pD)iW9c1NQcFN;npjc^ly6od6ppPEDL$Qb*rJOC4`NQUAgE)4doEJ& za#qlyO9}!bET~kGl|6VcD;uRiYym~lT{fauVwJ?^4j$eZ2RV2@rJ$Ok!ciiN;to>K zm7=CHO;6?zHes=wF4mB`Q~i*7M3i6D3J|gSJ3BEvMalAxl5kk&)njS5)GY%dRrcMZ zQk=S{=z1uMFouKA2o_~cbva}dN3&eC$xnnkxr|Dg!DUdid5555J`x)s{4g6Yn4(I6 zTcaqsvC`$zTMU&JHeJMgWOMJ{uU(gSe#L58*hwtwE$E+BIr4=#bQ9nf8n2%%N|T7L|djL!c#?H5S;3qmSCo$kh(zMrm+ZZdoJpi z0ZIV`F^Q0Rp}}B%XKKKl+LkPDD9bEBB;(q-j`7j-ez@TjF>6 z!o+>}#O#ZlX-k(r>D0=dfh+s(p>=Km-oP4i`I^?omgNE<%rUqULgJp9LE8(wGSTB* zJP{C0Ut%Fe&RaQyUx#iDjWOVh=cr~Sj^Hg#ql1qw-PE!2OFOAl6muE)$rbh=gDJ93 zj;#p05bne-MKcm_?o@5z(o8Li)CgHq!PT(H^bXO8Ye}_0-lWc?{%4!5TG5 z&nS)bvrX3-AqSdNyb@F5J1h5n$!$uq2n2J*{a+WjS5Dpq4;(CJ^3wfafLw`{SrdrU zX!J8*#r>fQ5HlT%a-E0N?9_R>PvlJ24~8l+Y6J%x4*5*eg-n-bY1_@@Xa++(sI-|5L@wEW_qnmi4l8c) z(DMlrhBG15P~0M>0bCMB_rfLkj^dIm1i>A_1Q~+PtNY#U_v{ZJ%&qZi4;;Z7FLlFU z+(E~?lju&L?V9N1B6X=3KHMjD5sw==G=QBaP5Rff%S*C9a}o?38>-l;K_=V@SjW5) z=E7>2sQgFLBnWMn*SA@+sMV;a3H&#Ebt#@3pvJcngRzh z{A@YJL+`kjgL%ZV!O9PHa9x3Zm_ynO7t2?Kr+N2yR#r~?2b|b%`wtUSef5%vPj3h)G@II_uy)9S zm8PpnItDvU2c_Yomm*WceH!c&4M$jvwzw^%eSRS6KKrZuChlM5}L1 zA@*HPF0No4RsqO59$#O<4Wq-R+l6hY@@+z|0pz<$`yjBFRKKtG~!PdxuH zzozppfFL1rbP?!imrH@pno~R|y3}q6AzF;wpaTsk5Gu+F)C*iA zx1T5Q_j_G?e;xKh{MWtW+}U$D95m~0!k-1lh;hdUuIX^2crLkX2rnXh!(GinIBSEn zImBN<%A;=5opop2M-cv$JK#R!+`Z4jYkA(SqQt0Mz!Qh65V|Dq*HJ4D8cGc>A!fgG zJ8;Cv=XV#Tq@_`}jIrw2xU*I-;rar?UQZ!CQC=r; zN9=?#Z(koEd#+P|L(7}*@!K6Kj`g&R5~(V|;wL)6nwI;=gO{Vk(Yb=ZH;E8o#ED1D>PJ0&f5N@sT>oCo z0NI{0hQKDtuo!Psi9@Z7M%fD4V+~|`4YA5_aNZSpn4jc9W_Jm$Hp-w!k#`YstN1N4 z?jn#kke^*;U1WAFN93{gnTX`v_!*?KwHp3ngcu^&hfu$vGz^sMSJEN#Ucg|){dIp( z&Tv>lu@KdR;U=VZi{r?zu-@)_ zft74>94UwQQM9KM!ALhu6XM-H&vG?TnNqM)p^cx4Z+J2zk17XB&nfgqA;3Nb<&ra}E~+L6i?i3bHpB63c*3jDDUSz?jsHv_S;=+$BN37kbovD# z6|DWJ{v7fuiga>XmnMaA%wclR1CT$IH$?}T5CwxGh#CliwP_qPHPyibsO;W#K*UaR zz?6m00m?;8mCD>W>LEL!u56N)xnD$Y=A>MzW99`W>sE%(Uauv!1=IscJHkM_=gy+d zdCARrNTOovxH<`tkg>DZTqof6HJR9CsO*0ov0>#O+Su0{Xgk1GfTeNk1RAhK zi*<-}$|auBeUKLa2N86p|1wblH>u#kzFo)biJp0Y_ERwwzrQo1{qPA1j2f_Y$3 zxcWTur|pqYjTyVf7uOfgL?8JNf#5`o!6A(nwSh@=%hqKaG^&G)V?8*7jbG08H5ZHG z45SO?5XD^n9ii>%^7;dRj)gvD0afA9cO$E4AZE*J44f=qw=KW&wHrZAp-okAqgEQt zV;E8LF0$-nKp{cn+Ks|YbsZahQhHuoFqaCQRB&i_4J58)C{Q?jCWy83;C)_aNrz%O zgT#xWZKO-q;rbs#Ex6ql2&_Bzv}!!7fJ0%9hmkrGQ&ilN9g-)Thz}xqpQqh@m}`|I z?DYb~CZP|wpb3tuh{8RNT9h0wp#^dQcltEa2sanaTp4kF@)$@|h3<8{J%fCgQLCkQ>Rjm0*0wg!Fd-i+`7e4?4G- z7^1!yK|T3)Aq#a_KPP|-j;Gsp2JKL}aJv=G1iFtF8Aq5hMa3!^`46yFt}IhyuJl)){eB}<0nunXB4@z)^Hm2EMPKnM!0jGTJ6L(w5QZCD8^&S16Z$= z*P3S~=Gaxi1_ z-E*)A!1mIOS<$_UznjkOV!e^1-gOq^Ya9;w+SoYCF_mYooY7RxZW8J?>prEQP9vGr zk{Bo3bIwuWCf4>Swjn5kQ>|oFX3VNk2;l2}+_@f#M|X^~DJX@hG*@ie!o^0Ge48uL z8|W>!6WrtpjFsul>9`vO#X5r3O1#EAnlq4QMB%*~*p9J!f@YIfC5Z1;%rC$Qqqm0R z1zDK$)X(S92NlO$XmKQ|e)F<-DjA#|R^KRKj9@L{G|wWhDm7X%m1zMR?pTbwJp3we zsTyf5gvJz~Xy!FGV3AQRDKs1tVdrM4gG~VdGW5mBOiJ^q!YgAe&y_eCt*MNRi}%K~+lp$pIt2l0D_Py$;QB{bI%KM3rK7?E)0IpZ zN?R#W@ax)2Sr6-=uqR=sBH8t_-(dA;IZ-$XZ)VVvEGY6hKuie=#U)8$ekC66&^-}p zrXHc*Fug)j+kg zEHUQ`K{KcF$gx*zM7o2iY(d9d&C)BtGM835(u7Il&9Ee^&+gxMZoFL!I@TNL&E!*P zDYdu+nq7~!6q`@v1aM`%bDf=_(p{BG_db`eg>+BaGA6iwEp88Kmx>Qd8dKSbs50d} z&nNiKnS`-zvol+?Go{Ocb~TclxHc=PvO1{_noybprEnd|r_NWhVyW??ffJFJF*RKf z=*W}Rr=`)uKZt27q^h8Z)kNf-E?2qAAXf{WZZ@>TMjjgJOPh7<+i!z5Nn&bEadl+l zxC$lF_nv>{{uO>d?LG}YL=KhrGcX}LDppW!F;+WJ2exr&>4Rdw<1%Or?yU@OGn0cm zO#H@XYf?11566Lg=qkzw+a~dK-noyh*CTQ-@^se1P%LiQvxnS6_`O4ZkGh8uKFVqzuJxgx7VWt=@aE6Y+(dH({ir<|Ol3+l<4>^K7`VVOr~1vxo6UQ7q319*9! zv!N>mZMgKubP*UdhiOnnSWpIerPPP7s^A}Ko^ua9@cRK9EpJ<6vub7k|8poUH2;yB6mw^7;*t{|i_wa%lKO^(^)pl_~QP;!&A)A++AWV`1y&`ng{o95h^Q=OCE zZ@%Z;u)z(u!dc9_4YhQ`d^z$-@MUtxNl-&<5a*kFGM2oiGpV%XT5<{{bwy6oj>%rr z4W2=b<~NGgZrr}QHsi7BZj58JxVvFSHtKR*C37W0IToAc*|&IqHrBpqo}n3?m{HSK zykn#z$5irf^!K5l=@E13`jH!Y^N5=REvVj2S){m>mE=RQ0kyaRsH;_)a8=th+NR$f z+J10zr6Za?vbmBOMUHQ-T*+M69rS@r6B8XA(X~>@8BBN7uXP>jX3Ml+uCsLP zsIjQMCz#@wAhUu?U%)GAgQFc{v<=|+1Nb@x>Y?$UHUwQ?zl1Pb!ra+I4WKZi?s*m^ z(w%ji`*ie+=M>tgo90Ei%vFd|4QE#BCdU}g<9X5B3Gp;?>q?^CmKd?17-28Ca+S^h z_oY0DeaOb+t`m3*Mpn`_*A2!IJpNCcmb!WUnOjuxzb9Sg1#StlRh?ORJBDq)1g~?$ zCv88rhT_=UN+38e0>f=6EX>9*_7R1Rjr#5Ijad!R&U4D?4K`gNQ)5$?@>1H5u2)O#b*8P{|_JHCzGB`PDBun@L2LCslA2 z#Wv%0zqNsF$zw4coBb!XaB&{cHflCAhJyJTuuqd}Q!gZ1hHOPjx*}C8bi`A-)`(?J zJb%MDp^e$pVq!fbjS~axpFvMP!<7nojIL~W%7HpP&G(#9p^RAzy~pv=##>Pwk>~4* zh_)-8smhl&)ZTNkCX}vr*XspaCf%`J&ImoX;ca}i_VsQY?zh`Q(ffz<0iWCyNICy? zd#Sjsl&tM1CuCer&)N9+#!@B4i)(zLeWfH|PO~zSX;&plnx;QB+|j3!UJrA^yh-LM z;VJ6P90j6&p&c|EAEb7Wq4te;mNPogYr87f>ug#}p|j6*?yPZCwOE;~Bln{$CQ{9f znmQ7x!Oz*oS6DHbRJ@tO$;gqkYJ(8Tvojk(PNX6eFA{TL#Y9M%N@|Q(6u`5Ofhv}e zb2BWe-4Jk8|G2!ue**G-z6_GvL%JL4WJ+-DaP|(#cCvjZjkY#Vvfs&TKPm73rzGAo z$qhY0b}SXey4z=(^nOgT6PSAOu0`P0MVAVjwcn!IopUxV7>{Dui%(Tqjyny|s!Y-N zQ3gWZh(;kvg*qR97NXOR9dgUq4g+Khgcr*pja5rEsFF!-1hQB-m$q2qr(%6&FXAOm zz!!PLzg-{H&FtM&@^QW;`u?4<9yKZdQ7k9m0Ay?3I7x|Gk! zl0p}^E2v2qOB~{Gw4k!%P8oEXcig-0EY0KEY+Zg_FmwjcP~L~dRp2T44JdMR=B3V{ z7$ZTu9brk}h92?Da`uADFSq*f>OWOBh_Ppx9wug_E6r9NeEP1&aqU*Z(2m zAmQg>!T#5i?Iyoj*22J-3lp7~GUSavTE7EDvrJlTY<$$EAyGyx^oqnQj<<4K4WYG&}Ksa7{v`n_F8KF&?%$}mgO21;y3Glx;q$b z%dzk@O(NETpmFRm=JS!r*U9a{`|1qs`6#OC?eEZkWYXDOF5Ya?j7&5`FKji^PB1Kyce8e3Lg@;|S) zZPAW`;!O(eD3?|oHrg9VXIy=nEC@uROn{PJvt$G>aPP>ftk*`c2-e5jS@70a-Nu?Ko5v1--aSM0yLVw{bu+f#Q;;SUtg0^F;aJ zC#Vv;NjzK9IZb}8bA!XJYL(8sV!KJbjX#+HxN*hB0_<3OBoqNL!BI{V>S&YqvyXwQ z%$0NCjgBfQh73}vv=e-8A>aEa&{tw(QkWGt^vM2-b-XQPua@_#4CCb_(V3zHDaP1z zy{hlGbEw=1R+XFRd=JNEF+bXjR9TNY&BgNilU|%|hdathjG?VaP>bQvI4Omk%(>Qsh8gd-Dg zxrO#>mPi7?9aREOYh;Ej}LmqE+Y$C{8!u zXNC5{HsS%y9;cfd+KjS-axs-MmLLYHd2@A;DmP}e(;7SHCKF_N>ihd7tP0i#Il1?c zand~V9CDbV=ej>7{?#-!!GO|zH~wG~?Ea8*`$!CFZ`5lkw-W2Q7ZcU>{65WF-N*6w z47_5AkOPR7-{+2_EWlFz-h799N|Q2;a>COzU-xFR!P=zdhF@ zn@!Z}IlI)RU0lRiTFySOyT~crP=2<#-9@fY=~eo5C!RrPQwJ0~3{!MLu~|gUP7?uL zSmsHi6O)LE9b{tK*8})ODmklKP1@GfugC7ytl;)>h>Ht4YWF6+${ef`UEuzzWEK1?rEH+&6nX+B^?mM z=FTu95E>1zWlFmI;WC@(R@(NY#D#4KOLGjM`8-bw(Qt9Xn3;(Asr#srpzHverJWKz zNm}`XxaRiTfWp_FF6Pzs9yKa6JLzO?&moV=c#+$J3U`o6sWYhC6T+b#cepIpG%vD; zyd#G|dZSaR&BJVXV|yGczSCer_l?jJ`qSJo<z6bMs?6(s@4+ytmwAxJN)6QBfNs$wU@W+fJ)Cgqw$rZNqb>lru zlHBAv5esh<`)q+M)+Sc4Mw+dM?2t8+S)oahRL%!g$j05qNXI6e4T9eA*)ynx+JU)BSQ!;AT2dLdmM&*`!Ahy+n2UC8r6Z$Q zV`?_?7+IYD@|Qg{{?j=4sU2)F8NtpM_xxg+klOD_TCrNA$9&`b@rrg-4BF{{#Ja5x zFY7cuohL$cq45_Ka1=04WHwTDEwbzN;^zO!!R>gbZTlXqJ4YM;N2jU&_A930Id)ei znpIVenM6#$%2eYiMRF`sQJ@4KqE+V3DP`B_U}RM-C~~`^G0J#Z%Kt{a7c)(%cGp{& z1;%;lRZ5N!@Apvr8o#7vk%Y&N#TOUk)X>JCmCc}3-~{II&ImEBwTKRz)(Uv+S;86f zl`vz{ihd`+dvCrwRMI&<>7v+1$D~>HgCyqU^w4|;ekXuya{;l5H;w?ug4~{(lxlz=#Wov$ z@zQlF3y2Gocf(1-oGsaOjTmVJHlO)qZ$4ypoX&kP0;*wX( z7k95?+@m+i`SBtjdMewVX>e=k7%yJ6h;Fc zuWO|m%>|)*w=So+-L5-W-cMI(BOtr=;JyMt6u~o+NHa^F{qa40A;>7?HdSJC6&yem#=L{J`us z(*)fv;y)Y_b3-g29{_T@*hAuo>jStx!Mc;-wTEf$`F3~4#VnuxfXAiv8gyOmZ_)n2 z#rS^g=X1PS?^G^h{@1HBSIxbQ}oe&l^sT0%gG+ zf{vjve|;F}tn`k{#Bwj5mNhlY+j-IQMMA13o5pSmNBQz}98jcqpfYkRkIW*v_5);I zp1@{eq!G2Gu@qUHOEJobFzpi!1cBp25a^bnO=<;P zWOZ(m*rJhgBOM?(fATD<$8-MmDJ+QxgQ|^RgTOW+%d;E5=gU z2vpXnezdcq=h3zPh#36AM8a8ShnHy@SON~@13rx(c4|5nkhcSjKq4zZ4^85_^{8td zW&Iq_GQ=C1#bgr9^-!B9n9FWdk-@3t>$4^?-fb1dN4PrSWH^T%P>lkw+a;B8fogUI7=h6z96i z;!=i<@PA_eQ|^Q4vo2#lh?6uQ^d>A$&=10z0Qbj3p`MsT z<61re75~Gqr+gUJlNVT~9?DS0*ohkR%8l7hTu-dfP;rV?3BISwgyrDmMVohqHsg9? zmDyb@r|tY0u8-@^y^=9){4765Rox-~(!B$|2T7sZd^+oy5}UbIuH{njjB21;Ci=`k~;5VB1r|)t?^VvVK_Vy#5|@#zH6qzjKc0(yv#4m{6zr#yWX`Q zq@$L0E#~`btu1zk>J_o~Pc}NMX%EU+234>kbp-#p7>&xjcrU`fJzig~o zQ*@}~larg06lQNHZnYl2BF9ooj83F-UQgAC154G7oimt1Zo-u+eboNdw4$<4*Asc+ z&)O)1v}c^KTzl+y{cgKlMnUC~=+!n==8z$nYBh^gg@&q*y1`RdkD&~h(muwJ=@6Ee zD<_0hB64-3uu(xFCiR!Hk?l}E(vglz)F}FO1`5{{LIHCzKR0R0l4Tq-l;WhJQNqT~ zmXpfkX>ii^iQA%;v8*0d_hX5rxH*NEI6aR7?uUh1h;QvJX@WdTt>W$R6}D*EvoIbp zS@8&N*b>Uy^0VWGmS6rL%hk{ zsRyLm%BMpAI4kl3%QndKYsq+9iuhHL$JSEmtfON3RxGWd!!-Vj?m_8ljT~1AualZb zaT51%5pKFt6O6PF=T8RwI3;BBETBp zFs7UJ7~jHqyHKU7K540w|1DuKi+W{O{8f3_eJ>nC>HIcB+RKqkE3Ou7z{=h zVCU8sZkJSzIbqDBKatbjjRUt^d@67H7wM^rQ7S!kQW`I}b*d@p9O^*YLFyDY?M>R2 zOFK?hs`SgEwkyw%M|1+lucDNsB%P3pW66K1B?XzA%0xnWyChz2Li^jtbl>Tl@ z!x(yzg^m9!osJZGW+hs0O&2ONf?(NnmB%4T*A5m#B|-E5POawJ(faR7*M6Li7ugoo zM_s7KGE-M`zvJDROMBB!xho=Hm8|lWol#h_nwy;f9TvCN!&XUA-HTsx#bz74c_XcB!P ze>2`xMwzCGDx~i4W72Q(J1%KR0~;vS>@QQeC@1NBN14c#V!FbJ2~*L??TNfGZB*8u z+=B~9ja9#RONj$bX>KYgVG8XN3PWBVvaoX0Rel~;nvqT(4L!*FcZiN4%=(+D8l&@5NzCcsaLoUoe|W~tpc zOZgOd&U$7D&P!5 z3RFVd<3amxhh6yba9wqh)Mzf`oB7b*UZWa^o_BVWbQe82k(KC#)RAc4J1W=ZMz?l& z(|S$1lyN@x)kf7A0NYWc(8i5RDNC`MOb0E8+6-6uky6&iQK1pbXiwQ+ShqfdbhAHb z35CHV30Wtd40x9IIG#ZktzT1cPMrWlA^u1ec{pumO&~{};uU%u*`SSxfL4OOu37Ez`XL2a~DG$`8$cd;&GOdNPBNkLVkilU0K zo`1L^t7Ih)bz>-c!?KOk)TfLfEc;j z$e+S-AWS{n zPWDcQS&5pC(Lp263zXOsgG@kGFHU|!Sv9LGSWAk1?V{bApfdUa<*fhj<&*Zg!8 z4%>A?t=BeNYwW+s@gtqaJvDXP9J_7z32os%C0SbpTK0%A=BxD_rU0uhow$2eOQ%)FP4!5e`q5q()39b7!)bt6vzslfC znM)prs?<_0Z@`>08B^{J>2**#*KfyYHKEXZ^TMMYKE0V@tSAuHDbe`iF_G>@+6Fkg zuCh=44O5adU^|fw2kj}KAw4fl6o)BSBzI2B%@5KBhG#rqYanEEDNEPI)<=`J75S1_ zEXg~gHl8%f$lFM9eB+1Y7~7U^Q_Z*Dn98;t16`Hrx*Uj3I=S(nGIcButj^$g*Oa~)iX^| z*9{dO|Ex^6+fE_#zD;f1QREuS_>h2ZF>)kbX%1uJlB4-#dQ_eYC>QanK9ilCMwn_h zFVVDv_~T$SD(!-0kf$(C3*pdS#rRrgE+5BRs_arlzkMyUwrA0{UY}3cAA)1@es>su zdLJuu@Pq@0R_%%pA=fOzgp1~5=6DM4JRVA$=aWcXLl4Zb&Kk#%dKu3LQ1ksLHG?p} zEk29qVK^k``yVbWFd^dlDF*Dkh}%J_Ml~3hE4+6KkgU1KQ5&%y4$4{zCu=U{16qbF za-NqU^G{0d(R7Y#*sgHC)P%%o|B_O7S}77MM{*W|E!Yca#c;bdPh5w)OXK+cZ|Vc= z%~{YA$0g8-^R??jvrV3NYfXv^wm}NSl@UH(F%iX&X#N-vQEKBir)5Z~NYPBmZw2fJ zIglR^%jrnox}^Lp!BbYs{H_2_vf`% zp0(%21hM9qe)&3BF352z&HnY9=rp!56^x_l*b+bzq6+)ZXv~}M{)a~gKQ&ncqU!&g z5QA;xz|C-N?d?NT%pLw&qGorA$iXcO1z~gV8N}Il`2rs`U6SfS{E2$^(aq&oMT6`L z;^oNZ%I*g-E`n{iMl)9O;th_sS0PvMy24%rPcoUT*H6*dMVcZis8dib!qhT$7FvRR zp3p4$W*Z>4q8`avI zaTfq77nFL3joW5wtn0qu+<2MPNOv}PJb@Y=;SY+k?PF}D2CA+dYA7{?YOC!{vccLw zlNv^%R|(slF4|DyrTlu^VsURFae8%Xxc(T6ZW|Q|@G_6y2 zn-L9*J#f1Mt|<%M)5k$wyobql;wfF#MMF<^rRR&OC(#a~ccB_iLVwYNchjD90WIow z9qVO%&c~lX4c4B-A4~09)LDZz$;A)xZ5se&hgYOGqz~dwZmB-2b%d?Qd@aGDq^t(3 zJ)^Pr5|@Ndy(^x@jMDGB(nDMK&1}x)TQcKsfSh%y{=qWbr?Na@4rMm1wJFrku_grv zZ6vOZ9K%}Ao1%lwENn7ZtDW}qFmCvcMQAx&QDDAy?r*?sI#SjncdmTKlk>5M3TGaR z>(<);sSJzwuExj6v(m45sx~=+BSmET)G6$mAj47cP;}c!|AfcYxPUcoNFH47{;bD+ z=sl9(^iH8*d0Stcg}Mj6F@3vRcm}j$H&Ajdj5aRZ?l#y9a#cFSq5j*BCC(9Dh4~rX z__Ha95Hh2%(~z2fIbdNTwBL55kY(j$?F`w}(Y<%wQDiDX;DqB1kgSgw-FX^Aa{o&lxDh+>VI6KK`Up^F_YsR{@C zLUPspo1~8Zd%Y25*5QLQJs;wyV|Ja#ufc%W-VZs(xIJZFi*Dis>g6T*8)H2xXgP_w z!*yAv8O0R(GeqpMri_&|E6-v8l#enq7tCzPGRCViGf1zZlDsYwgQg7|=P4UtT}j4k z%d(EgZFl0S?51%x`+^V;x3j$Ja^&>fkRr!XJ{}BruHTSBQm)*|%k@$+R$glu0eSVD zCs)GnqWnT)BYatYFUc=H1KEEbh~`JJX*tq2ekS`M-s86iB|q9l4IjkKS$BXqNJc@< zxz8%Mw<$u*>#Pr6hU}|J6nfEJLV4nS9`WokxhGfjijB>)`R5AI3f2{yV? zIG)}d9I;yi$EKwHj|K{}S&^r(cC5^8sBGEn!E_gW)h^$2pN%bk9207a@exjCzImqo z7-%WgS7{u{>(`+^)g4ZNZF0t}h^!SYcPPK_>7FcyD8@g{b!7Y;ZDN__XD)sg2 zN^!n^KTQv6*VoGG`fY}5E;owZbz9vwA#}fh>p$Z5iz7*%Nov&5vwHKR06Mvow%QeN ziQt-|eWtf8u?`ORzA*2(8sd_jTtU_=_rxPs#_y>M=~ulm8^_k44HWt(Fya(dfX|)% zzrVkFV&>w>|Lw-syT1HCUHT8M??3(F`DfpI-~aQ+TlZ9lD%D5yvA1_m^{z^_d0bw1 zyS_cu<|BMZJaWl%49}Bze~3?JIO-#wW(E{Q1?Q1|j<0w=@1LkhDtxhP00}#puxDu1 zUWT$4UuEm)wmsFxA0fRpzn!f!^YHKvM1H}CQTbS9sP!fPd^s!dYR{hP)0JV3zx5@+ z^t`pb+wHDoZTlCkn=k#^JG>8tMD zvK0k;?q)3r-g>ob>u}fBZZ!KYyf*(klYhk4e!$Rod$($3U0b{O{tAD-x()qn{15>A zXbYfu7n<)vGnFm`x*6yeAit|Xepg;z(U(``<*WMg)xJ@uwQoZq1KI&5R5Xm7)y5kL z_2F+o-hRMxfD8|`-KVv@E>*q`NJe_L`wE8|KMuh+L-40kZl^) zzv|;>+cEOh#((X?uxjvU3<_0@0)e0#P|R_Rj*>(V;`;Hoog>I-(o1Ee2lV2qdr|#f z;^H`ds(THBN4Aops(WFHk~vX*L`LO{mL3xJGUxEnagyLLXu}P$_R3Hn5kJy1)W^!D zsrv*%{G#RoG6uYt+Ktcqq4KoUm2+Esti`Z6Dt3s^4XrPBO^nn zfJQ!m+zOC#inRGXQp2rZGWc!$G!HQJa@ST85K@(7Bva$t`toh2G!Mv2^MGV~SyNsn zT2K(6aqd*AgX~syu&bB29_;Gs8{L9u9|I&O&=5;(;}7s!sqEm-PX6@sXDfet`P0Ln zE!xVD_3@@YltLRn*SB9}6JuKz+Mb1WWTBl|s6PvJWudKEs5c9BXQ7@fv}FgNl4*$f z6NTT5!at3|Kaaw{Ac97E2zIsc*X-W#HU})79J=+n;Xc<@Z4FjW4sQeg6j7Kd7$*K= z$oTth{sR9DzYIdy2|^eFY^-Cr+SE63|6)E*8X&hTGwbb2%%G= zg1m^3TK}n5uQ>oZ(ld-2MtU%Ijsse4{B5rT+;3C|dq=^B5$dA`Pn~^dP^RjRlz!_v zgo2R#-yr}F!h&0+o`D{|4c^}lAj(JD!d3u=?p(*(z*ddwGg-SmEb{;}IzR9fU^08` zq8s40Evus{UWa|S3p4&V_`i=-`c$>?_ml?JlL!E1+ed-1zeitNdk4u;eoF+RH;t}= zfgP@Ezy}9*j#hjS>6|=Y(lLF*OM)&ie~Oo()=w;S>(iVyt)DO>9(=j=X?eNzX|k|4 zIH-unFXPEWMo0lpYe;I@(QfY+2DX zrX5oTeAWTWIzZ9IlxpKGnQT7Xj~Xn#uL}SpokF+T_%*TL_*H)fBca;kx-*EiGRAr- zj-uN=WC(HyeuWBw@L$PX{8a$q*AWQ6&Px9}lxE{l(O4W041Mz?>adu`uSpEQW{iT_ z1heV}3G{;=*jBS&8gBNJoi>N?4rrSFB1DEUq{G9kau4TT^SzvV(#{@aYJJndY5h5q zp$Ue-w@uBUAgZ1hPJUj7Te4*#3W92LL~9+9(P`cRHilNvAVQ?FVNxuh=Cj)RY9H7} z3&cAjfo~%K)^(o4$O5J>bb*&u&u=4^wMh$+>9H{1S%Cd}kAU$W1>-%L?$Y{6;I^%w zWYM=i9ilN0S>1a$AbyHw!CRjepzZ>Vk)(zy6t;tCueFnneh6^8_iH{ML%m_4NZI4ay9g~_wfh%iN0A#(86s}G;nqi zcr$tXY4Y~tsG@!?yj35)`sj-?^ci4pMv>d2@J`DRSGzUJ&>MxfMd2OVn1^7ez76Pu zQW>4u0hHr`)q*^MM{DdCNsoSE(LYb3f370s3#>yX71r0g9hvhWCLJP0#gnRsdoX?8 z?=azpp-1$|M60&;Vg~UYA%%pRIc3gX%8EX&GEmDv*LLMm4DZMU;sCYvYU59<&F29> zIRKa@raoEcar|QLsptncMp&6Xp02BJsCjO<&vo}9dU&`85yQjVvA`Q@zAy~#B)B;_ zFyOk7?iujZFnS)nDpSFXr;r4YC&^wZ+o08mo>D`517HO;#Pw0aVZMPeLpaWAi5ec5 zoqS+w@d4WB1Cx;t%tJmWymga`W^<05c>%q6 zad`OMx#(5&3em$=@S8N}!0r%bxuC}Z$a@9`!Hgw95!!mqtLFo3n8rCuVw-0;q``~bS+K1?Qvkx0q``k(V+lLE`_rWT-;6pt3 zy5BvP{Cg6%4ro*cU*mgO=-XN7yIJU!Ec9{~qESj@Ve>#1TFXM8&q56gwSHuwCbdUZ zm|nL~1k0C*p4RJvp4RJvt8Xf0$Dcm@G`@^pSA7vOz}IE;zscX$k0ktgAztYP38NvAYy1Vk-K{sJh` zY6U1n=;&6PO#t~aVZc(O+PX*>zB%T0CDRgICX!2{}$*|{U{An#6?{jwl0F%@pY*6%S<`HNZ&#!GSuZEuT`B$Glj23C9;z9}r>mp>3lT-v!Y@Tc@l+kvXVGd6YI5 zDW2ft&{>C?e|0%;?(ePKKim&O* z*O>4%sqSkM{|$}*hNunb!dE2i8@EEukSUHU|a=26g@*g3}0(uHXI-lFbkCa|=W`bZbRN?uQ)4 zTd!?*J(ZE}KK##>EB8FQU}>S4?87WZ$8No*NnPDY@4}`=wF%i+y#<^12y&wi)eoA~ z3n~M!R+1!cL0iDiN_Av_wjSCtX~U8rdIoD&k0kc>^+ADcy$iNF$;Uu-WT)H0IGV1i zBQW!W*WQ7yd})XCmIZ_%+p#8mb0=(Ec)%Qry%&x9DRf4}{gei6Wa{EicMpE5Jq-5o zXDfet`Lm5b+ofdl9K$>KvvZr+3J{^%wGrMF3y%0B{)YZdNqRs9~&i<%tC^up;jWN)&o7QB>xA5V;ZT z2Ut|j^exK+)nAmrAEWM_4y4s&2$^=##APoikJg6=(8MrE>r48Cm3EK|^?|;@N*5mQ zcRL0v-4Z~aZ5qktxrPvjW>LQJh5{}@#G({c(;u^{0pztXEAhY$4;VaF2siFfI%U86_SF$n;X_;?nnQ!?rc#64C z>27;pMuI}FqeiX_cyb-}(%wzU>{>>yVsm=Ad8yy8*j*7RTD;ij1G&Rgd(pBYd<=DUR4%JqzZJMTeYT90I(q) zibs%iT#YP4G6INbJtYjIb+jsEl4U{8;VhGuLKG^(IMPa^Z07jzpi~{j>_kMCykoGd z@_v!*?{|aP36iq@eRvlV+)zes(KtK5n zSM;ZKEsYI7W~SQm8>&{PNmo?V#h?vS4w|dB?jr~TBV5&Bn)EtGi55n)+HOY;b_h>Z zsTo2o4XjV9&A*olnt#vmZ#Ars)=~Ck1hmNpo)TpVa-{VXBJhi8g2z$V59B$38O0@5 zRZI-%^1x85vI8qiJ|VV_i&`&R`_u>#Kq>~+dlewuWnrp;Blgm_i`l&!0cNh~j?KTb z0eCOvPOC?Lx5;lmlUhR~RZSW~Cx)x12??R4m6VoN3DW>773jsq? zj?qP739YxJoz}%F*Ab`^v>`QeZ-`Lf;fsRi(4seq_sez;8{*<5%YkZ1kXLt-Ah9#n zn)fmDG7fA71|*3_%3HgEFkkvD|D4~2`DI~%|CTVe)_fm=f>&1gmen>7L?F|=bhot! z-9r6DfrUveP@0fsr^Ndg$MGHqBb|Hv0eu zk>Q(W&{~tQv_>5WC3Lu0w;wPB(JX!kY=QQcEjV<6cfAj|f;QQ@J^%zkZ8E%31Pow% z7(=HC!yHGhNn7WoKj)=Qgh8C|5fZJoK24Re^UH{SyxArk6yeh}fN zqnjy1tvi(N?&z0U_*>ZLm^5IR)mP35fEv`33^t&ftTpr0}%9XMwN# zK=Y~vW-M^g0w4E*TYU(C-Esf-U9Jbc92o(icteOnT9k{VS5U*6Ul$C32k!CRYwkhh zAUo1}RkR$wc1eF*_n^PcJvs$mMTovbtvhIL6+;2S1Dt8PQJF{1^Qf(Q;229R{~?>O=>F%Gp}MmMOa0Pxn!pdAEgiv$4z=~z{0p_l2u0aIFa zgpz86f}+a(yAet#yaL)WQjR{VxBeYOo~zEXsWBnWF;9-N7l;k2QEUmm*Y6CHK6h#a z)I7Y%_?c4~*|!q%$T0fOX{z34h(wdsTVIC|gb_s-y571y7|a_#lIgEDs~=_2&CiGE z=I2B7H>2opiU{KfsTkD|CcSK_>b#a9y4f70$Yl<8w>g;YCboW*11K8IVz3?u-%{zRYBZqJ_XOVPa#?qSJgpdR4w`Wv zq!l5!eW;tK9@u9Mto`n?D$6qFDzCeN1yn)bb$Y!n@U;fpgT0Q@210LXz2t`e!90>1 z@|R|aYZ%n}qwZ-7Az~oyURBdip(&os-~k3ivCTNDkEsM$I>g@7w!w3j+ldo?-)YwU z9{phXWng;A23MJ#dfblfthfR7|K>-hc7pBCo;nKhV9OHhG6QNnVhuA$*ut#8$3qy!k5O+AUb@@$cokiB`}P75dZv3a z27!SgKtOUL;bG$TuXJMlm2j)S@?_h1LwNLC;C7r6oMQ}k?IhFjv0N!|Z42(mM@WO& zA6y(v^q2gzp+sBB6ho=^6Iojel3XlxFtl*>!xLeIxtG@@e%%f z7C(VKO-1Z!N;-0v_UbNqc|~8uyx9_`(rW9woV|DPhgQedcLNV%vq+L(F?qJWOI+P* zzz`w&i-fjQkNB$a{(;f0T(7xU6p|j{ZRt-g42ww9% zJ*%+Pf@p-AA{y`Dp3z>-NO2E6pa}^8Z&PBt`JP>9`#cly!}#}&ZtJQJQu4BjkbQ7? z5GFE=*w40oh5sPJSWLCzQvdC4Z?s13Cc2%S!mJ6qsYJj-?a>1fnJ{x{$%2}*SyGh zd-*tDqz+X4H+aE_VT%?y&r4qcFC4006li<~!H=+F3?r5t1fvTbB|>}^uMP~t`rd<0 zJs$=1!Fs8wg9F2R@TO@nBZ!*+>QL*y@77MWUX9`uBVE`WK?ce|sA(KNb{&qlG*eWe zYuU(VQDOAnHM&Kn1xO=ALO}qjvDABX=!tQO;DFK1F(hFr4D}dmwr=F0)*{G9o?Cqy zieb?%3N?ZBq$+tqg)+oM8MSbDPkMb^v{B6K2L6{Be(TfN)&oA7?L2ztA>6Gokm_I0 zy8AATYyNE<>5E!q-$);@qMa&~Y#pu&Jtz`<6Zce`BnyqJ0#kq|MxJjKL<%fdxgi_22Mw3w8|fgkLEi`ET;L<+kn>2EKhS*uDzxo$*(s2I3b8 z?fAw5o~DQ|dz^LE;zv1}Po!?3Jihxcmo{4Q)JA}eCcDYD1}q>gY&2QeyD2u=?(cu@yE8*cM$#l*G(n}|d-waE`*rR)=bn2W zyc|pmAtp4{;()Sb^1Fho9kIiz5^qVk2?3jqsL#oi`_Vy9DM{`AG=+%Msok%wTTmlM zOCYSW`8eJ7VQqliAxsF#phAOGjW>r9+NQYLvMJFc>=_-~1gUC%=`BhMXId+j&uec- zeWmgRo^fEb&pQfTE;c%tBiegLTRqeA#DzqAS_-+xC*Q9W2sC(x(II*G`N&E6(Vzpu zPBgE0DWE%%@=kmjm+HZ=dgvW+K$RyU%qb;0MtAI{eer9{x;T=>;h@gz^VkZ$2ga<~ z5kMp!inL;{;tnwOiQYTtdr6>oB#gt#hI=Z%EBaLw;oBLR(oMOK+WPi}cK2aB%v&h? z|78}c^5zeN^XJhRR@C*Awfg7FOjLC9KYeffESf@!I)8fo;x2}``;tG4eZj`kpUbe1 zh1H{ClX{?pXt)r2faJ??D7*^n0R)z{NkoVf&Ci|y-sMgO(#2{SAeBC>&NpPx zCQTLC{0v{mm4eu<5{t+VN-&Q09xB%C+0Kh-snyG!9C@pSZc7|(=ZK9m*JZ6vulLTc zE2(;ocUnDjye9#hcuEjj`(hDpwV>wsj&QE(v=6J!HyYb?DOP7VIb*J>TXO(w@@w8( zRn@H8&yeu5Ua_ufx}uyCA=^)FVgr>h5x};}rE*|9H<4j0bV4r89+^wWT`bY6Iln7T zHW{BKI1e*JWjXnRVq+I!2(;<)du*%bne2riY4w|e5V4z*07S_>u_M_7w;YPT*`&v2 zJ^J*xS&uDx+@i-;J#N+G9eVWZk<(+F9`Dp+yB_b-<2F5Z=&@6eckA&UJ$C6apa)tY zkNKk;xZhe`O_5~1_6U>+e)^Q@ilaY(GO0Zh?w7Z6HLI&ok{H*XuqoEx-z8Fk$=1(- zn3OW4^2^LcsC$$`IGTsMgw2KyMe#Rwav0~rHGRp$nEX2HCe^=@!?N0AqV0On-EO!$ z>3UU(sJSfWQs;>#d}b_4)CP|4*XDoWWg4!= zRj#5hB1iQs_dQv#drGWA&WV_&5qu;XX%??sL?hPj2kC<9u9(YoLX7 z2qfkqb_#8zH@I_kbe9pWbNJ=1d2dhjCIa=e>$7qdBX{*Aya!KjcPi0N3CzET}Sw_;hp@^;x5% zK7mDref?k-9f|i*g$~5~QmGy(o(Ky?yf}#3ZZ$>R5!xOwY;0KErb?!Aa;RUeld>9J z%fRy{l^|_}c~?LWb=gUyFR_te+9lBPuWon0Mq;)mtDX^yo2MfSO;nEeJJF2=8zg`L z!0qM%_^!=4z-#TXi$E8f>t|HCT&Zpz$ZTL!Pv_E`nJIpH(pc@)rbL#48Fs@F;pnZd z(kL5(N2#6ZB6zrki4@umLY5)W=n<+1V9^;IPYT`Aa=OCJ`q*PBO|wesPKx9PF2}{X zNLq`P4Zcx%I>GMIR!JnD0A+4S@xXuYeftX_SuEcq6K@s&>OBuHY&`g>nNJU0=(+S4 zyH4NtaQiRs_}~BV^v!op|F8GHe>Okxm(O?>>G0FDCx> zQ|JG3;J^OQ|2X_7|LKo2=L^Zty_DJd*_S>&@Zy8_{MO3dzyJB=>F0lU>HgQZTn_*I zkN)!?{&sZWQ-A)q|L60y-}|kbhI)SKk8=aPANbWjUAZImXZIu%A3kz&emTE#?o2s< zvbda|DVI;@XUk`n%BA8;c{V?PI=^zVod3XmAGtffe5PEQpPMIQe)06){Ly8?=T8@x z&XH<)rCgldi}8(Q;;x^l#G_~DRjV%#yB46v5Stw~Nn`I0_9XTOx;_JCR^;6ozq|Do z2CZDS=halM{cvz=xGTIP+`Tc}5f0k_5k1|W^h!9vC9XmKZtq2v%W89#InR#R(}GD* zy3BwoK?Lo(%$;ouc&0HLfMQZ6yDR7ocV)smGU4uwY8=U04Yy~S#ak^qGC{obBosEI z7JaNrj|m+<)U&;ljq9t~Kq%JkBj@mT1Rza=sVhj!CWZ637fPF1?W*(z+S)yM2Z8|Y z8iiXr9B=oAu%}6mjA^H55wBa1<`AD)A;jj8kpnTPkV1Wxm%uVy-&b<0ytjrFsYvCQ zeC3yX<(J~huX{UMz-7$5)2hq3OmX{ME8TNLAQKv~(GdoGeUmT0JK#p~WnZNyAFg`~ z$D?2#$UK0am9Jzd7o!}NuV}V`Me_`8b_3m?>g^ALbeQK&E?ssZ{pMcRwNqg}%xBce zn}w&u%TT@jUI>KO__sCa?pCr~drS~rCa{-FelN5$oS3T6wEj{j(@Wwx$es?kr>H}8 zT$d3>Z=jX`Mkdo8aJ{Mn!5yhkHzscuS)OI;3P_?T{ZovLn6z~UZQ8i>|K4Qc&|S-m zr|&MW43E0?d*|Y*Gc4+v`GxtFbNNrsFD!ru@=N7Yi=S{PpqQUKyK;7^oc~05X_>{J zU!2RUjJ@_26q%5?r_?O^sGnROmK{8xP7j- zR$y}Va_C{puivc=qU|;lnQ*!vUG0+KNE5Uz=#Wj0xBF?VK5PU0Rc(~?do{`QhJfJe znT?fPj4xWfwKe9J&_hq)I#R=GQ=(m#RT2&xLF;P)!sh6;(Y@dXe4Jb{m+dz!?Gi%a`BmwR2lb|2S%eZDpy=Z=EneC~x7wRc=~6v*G8Ivoc^M=Os8 zw}kuQR2=g{U(~I92Z1A~T&XemEwwvHIxM8qo*V7iWlu+I(W&NZVjzzMUX8=Ax_5L` zgM})2XEMA$;ArXo-r7MV+#(-x{Y+@RK}G!=14r$&;G)_=kbhV^76$OHN5kqPA?itQ zgq6>Py6BHn=a+hKq!BV!A(3S$j=)>#kgBLDkxfPqH5?kUht#!z^N`9B&BiMO z@_a}g!wNr^WZ=@qxY&Ag2dv#en{&8Dh*W{pG!PxP%FFMdfwCN89$flK`oZs!TLO-< zuZg5fXr6}WWtMYzBs{EXgej84MjE^&9B!DO{MxzGJklJBFnHK90mo)DV2R3G>1+mW zM2i!TZN_hH3EKU}@|JFD_}H81FFuV~Rr^#dR>7t6lKnmI_-A#4daF90$)_~HFQ**uC;}qv18UOC zXxMjC%E+OmBQ%V*6&^Oyd0TP=r}e}uugA^|efGTpcFC*>)Bw0-Hs3YPwfZ&6wa0;2 zbGx_p*{w-4K$T1!Np#8g1dH;8diNHod5=q7JRh5>PwU1-4LqON)XI_kjT12|U8b^!Uol`_Wj)N|5` zMSogME7X8_I*fOhxXN_fj^bd;#jK6g$ZB7T#RzhLx#8}uy>PQE`t^Pn)X)L6D{Hr>wm%gJsGca5)*|%0jpA%-lQ3_=o3~9q)o9_-bDx~r~4<{CL zSn=N{q~-U0H{;WAr1duT9wxvWy|qiU3Bt0K&hBpYban*oS_#?iPT|a`BOL_o8OWu~ zO+wAI1-88MZ90J_iJGfixkV8+zwodXO!)|(;!Q|51NcoS;_t+NAvg_XuC4Lm$R7e$$(thN-yIKYu}>hKEo^Q zX0V-VDP`rLwZTsDC}XY1bz}8BiF9P}9B=7V>n*>+<<}cHT?QbmKG&`F_MC%P!PX&- z;Mf=EIv=me>Uqm`KF)Ps?aFQ7nv%9`_(OI!T%^yo9{*`glXOm6yd~sp^-;`(XEG{g}6iXjp&X*P! z7Rn{#;1h`x$;7Yz6w04J{ovbF@IW$g|Bqe4eLoERf1OMm`-w|`d*JU+Chq&Oi=SRv zT3mXYUeVxIo?+TYSVdwALleVwLm04i^2F4LPefoecI zsm2zG^+~^jB3W-ZUr~+G4xxfu+5>5PfWk597_^DKQDk-ZO(s-cCv{*gL*?1**V63J zm2my4hh>Pwrl^~)d2{awAReMA1Qx1oiuK@Z5-L!JZ3<> zPRxM?6vVfp`eC7Ux+sYSjqFvf1BMnI3nIOlPSSyVd<5OrWGXKAHFGpWUy&@Za*2HF zqCE$q%ck8#w$$dBmTn>fB0%pDY3smoe357~?#e3xdVwa9LJt#TCzwYim{*&NMbU6w zb~;H+UrUV)I3XKaLL6flw1hZDtGy+}v1D!9ETRK6xFyPQVmfW$L4LcNi3O>u9p^LSgz@7&*i^{|?`2+wHM6ky3qhys zUHvG3ZkR~iSX0bYc2Z!BrxbQ8HCr#apT$)!F^e((K)UXY?4m?*-}#aSbc$RuGY2}_ za>-wDuUA0~wKsI1O@!kc;`H(;J23YA;N|(*;oMc= zr9R{sudv*^y9FSV+kV>uO$Pl8*#r!4g|lEWYj(`Xt`Cjs<_Aj{*Gdb!K}A z<=hnJXkDo{uTSd>BDgiN4~CiXR)AoaHW@u0N{q0sOc`K~8d>t`O=%tWk-C}E$2QMl zqoN(js#CztotP%>Ot$lvHpcO?Jul(!=5GUk8U8x?YvZqrzkt6E{x%vPs%w~ZQT01e z5j8kSrh3eJ^=Dyup5m6|jaVLri<{#l=xV!Rf_OSd&FLH+@l*UO%_;sBpYGX47&mPU zKVhDw5mt?b&nW6Q!lFlf-byp9;=|50!_LKFl_wful_z|<_C{FL?$f>42&=s4!_GIu zptBsO{(Lj+c^`J68Fs;kJ=F|*%7;DO40}2biv}BE(IBHC4&gW}Dy&BC2MfVTRF8Ht z+sn9ms%22ExS!BZ#J2d9#xtTOE1`OVqC{lsE#mToB1BxuVYh!yV8Ywo(L$N=L@VQ? zG{*E;Zjq=brUT}zx$yAw@y$S3^b@RPUyHq)sa(}Y`R}j|x>||bk6jy2PE@}QmTm|= zuwX+Wh!v_QQd_P&zc8^vO5%s=iPOR6usR!q(u9bZ>whXf?uZ}v&2}ZAytoAL998uL zP!El&{XpZuNpma-0ogiWHxcAnK_A9Z1c^o62-Il6XZNsiiV9r<1DZnct8$!2r>jtF z*M*A*RUkv#Oq=QCIOy8YY)5BYR`w>7b0Q58hXfy%3!u%6dWc`^JSIesdFSj7WLZvL zwVo688P(Hfy0)9mTbo4ZaM0B+hoiP)D#$8W=U(s8ZhXRb$wZLtj-%JVTq!pSb1|t6 zV%H@0NJ*FiahtX#1EM4ubQryCZ>tRxM~J}a6G+$f(kvGwi57O3RHSn5=t(1Wr1Wjc zZ7!1^c;zMu%a{4ekuxF%Tcc($(hULy-PAI^cvBnw2wxwUbs8HYsoAdlKr2&cJk+?? z$7DCg!>t&TQoaJgERKLp9Lpp;?O2>sJ+utu6FC{JS`>##&Sz1VV-F`9CQiI5XmMb+Em zTy+crS}t>_*ywS4e%6rQNwz?M#kaMd{xS_iMePZD5G%YP!R^N$Vh(PGJzSBdlP_@^hnJeH> zl7aD@OExTk0+bTg_Xs$>Su66Xc6p5zioR~WxyM>~#cKaf7`@G}Sn7PcoWa#0e}N*~PX1ygz7o!WI;bHONDLF|#3Pijr-vmj7f zU!vq77h>fjt(bS|h!aC#6eXFg=Hvysdlyp>uQhlxVx{OMv)e?AzZgcJ!J3xVIqy%67^rSGUT{ zq|y?|!@=BuI+b08bcRzqxBI}Vz({Na9ns@#t?D0pq4vW;mQDO8u==CvX~t2QQ%sGb z@fbKHOQ`%dwLR647ky;r*AQ{-Up{xb)G9D@Dl1ZFIZ|By_}&i|ODl^@=l0&WQe0ZO zyZp)gsq)In#o7GIV!k0b%ikr%m!e8KxwLqC@$B-#x%b^T`>tIB`F-!tUjxLhPZSr< zmInqBiORnR#%HgI{$~W^?)=>1(y8Lg3IZ{M_j%y`!=DX!cQaxJ__81uDtW>d!a+9c zXgkMwgVM1y!&w&KL{#+=?Sa)DVKvcT`F&dZJ1rv9pLh<(cxLlj)xb*!ANAYOc$g67oPhy~ZQCphie?K}N_zD$mlo-~Q*@x|VUUCGyW5 z(%q)rw|*$xx^TkV+a=v$74%g8jE;Zl@Zy=X3+Vp+#0%g|ToC6JoLLAXqgu3b(k%u< zi_8Bg%(@;hHwv_^xb$FoWqs?6&b%Df4{6V+-(g$G_YjEKmhrtXl3OHr=q$S3Dm?_} zy!H)o#q0!~!0~z~J}EdHrw^eL^@2h=ZrjuMekDMs^d;kCP-looi#c`+)+k)GrOhm8W3;5I%-NYb^~T1$$g!%lnB=w@@F+@3UE(9E}U zH8TlyR-bZb?1o63JInTulSQGJGrTUSgCsJM>8->ypQ#Bu~*IHXA@oyezHNTSiT?x`-02t zTcJ3ZW=1xk;X^QCpOk8+Oh;%tN6ir%@l(S zDw%CHjF^a@<6zg%Hj2c#lOT40PWn-4#d!X`f%^A2_*uvgEaV4R)#GR7-L7_-$^)10 z)dCd$%NgUb5X&6)JQgWvc|6tRwrM7Zm2%jf76|^^by{Er66wLS4v`Hv6-qZj<5vk1%qAw~cc&zNB! zFy=RKnFQmo6UR-((9>WYunDi!)+CPehW~484LP0ZvxfB}rfp@}>-XDC`W!P+!p18x z?^wMe^%pZ~=bBx;vLkS3OiuoTeHE+A`5Ix4rNTTLd980Hw5;~2WLwc!sAng>1>Q{9 zs{9gmUb!_0Xswy3Lmr9JKox6t>ThiK2{hMH)hp|yoj@y2k~CXD#NTaAmav92m5lD}eql%|bzX?N5Lcsu9K(2x1GZe2>Vzew z3ABOJe1LT$d!;e5*o*=Sp}{L|WUplNJt-8jo&<&yUU=H6BnY>fRMhPiv z+Lf?=d_sD^%!(^+Qp5wMfr}^djl=0E&ms_rpZyxkmfhVb%Y=x@PIB5y0N#hL2&of!2s z?jmav(-5c( zQZ71|&NVNWb|seP=3O z{X1i9uv2hUcd87du7n}X=UZFd>3|y8f^w=|<-KUnHB79?&+QBLkG|WH6jj$^q!b-# zK~x-4xmh1Q63_mx#r|jAyY_J9x42YyXuh?{e{WF;rDUP z6Q6Y<-MMLc2{PmiYvuC7f-J&A$i!pva&Qkb9SY?_crL)j~!gTw>(!~DxWTucMWJ! zSDs-i+Gspy&-1?kMt1n@xgYX2RU;4|n#OLv>h>_h5pmMJ{k=h#Mv>vX=BLrD>Rmyp^wuARa;u$4_MO&$!f2g6KgzC`gK@FhZRiSV#2{*~J}Uc);EqT6nLy`v97cHb<^bgh0-3Uk3vKc~nqf21 zoochfDdbRn)X{-1#FfPr`U3QakfcXnt#8D##Kf4W5z#NrD}r4f5E%OtUtVH*Hv*Mb z^WEVv%h}H*tvHK`VWoDwlV+{itY3?bO}Y+ol*^jiG)ZElsW6>QSfh>BOjS&b0(u@+ z#Mjl19=31ut=McCKpv_EVswruJR^x*iYu04N*VIV$fe&e_4MBQmp0JP*&e(7OBT@} z%`++^!~V2|C=-tGG}i}$Fv|#C$%!mRT(1L0N2U39j%%8nM^w>vlSY`%8dzi@5yGiIO;2JDSB7xKT6|NJBB8TtA57E#6v{5v5aaY zZkj6s`8D3!4qp@UslKLBtG*U{>tB|a?ZG>oX-1{+c=5Fq3NAY#8MyP^sTF{#w7G?r z2|5vM(dwbYWC~F4y5=d7&nKnlPZH}3)O_ud1TW0-E(~7tyn(Y2o@E zoa?%UAlh1Z>QG-5x(T-}FZP zrC84jhbVSHep=t4$gp*_tMxR!`V4*bA_`pAUHzyI>yns#pF`8&S>-w&9^V=CX8Xzi zI?VIQesbWE$v7y!``H9ZsBLY3(3555VPTFDp!{6FgSPhYkNVyez@As1N!b;6VH-+? zM%R@OZqyh;!ayJ!XwVJ>m@4ew#YIT&uSM}l`S-QNQS^ueVb_dP+?S6?XS&?K1>yk% z!H9?Ge-I$mggMG)x=OjFyf^593t>`OHb%!n!?LdF>e6ahCb5gtP0759`<#k%VKhRi znrSjfHq=Ygy}EtHXmI~q_A%CS{kM{LPe#0)tWCO+!ho8fad!uZ&rWKWB>~rPP2p1{uZ48d4=oFQttpflR4H<+cJbn zWl}0LdRQPd+*G`=6Bb;7a>r>@wO`Z&{T)i7pniuuR9b^wmZ!PN%Gbn1%94%ox!krX z$U*L7>j0AldI8`oT@xmW`Ei3hzI4&=6j=Hze-!KlR-cV=Fr3@3r(kgJfrg(-3HChz zK75GzufAHNd-=2F#+|#*XF$o0KD57Ux+1rjl#JTNAt6dX+y2o1KK+ zQG=bYqj-3sE4(wFS~lIlxV_Q$`I$O&qq&Xgr&%WsE6kw@i(G-W(1|GCTGMdu8}gZkM(TK_IsS!6a>YT9XqTsFa@>v+zJ7*|0i77pB+9e7kda-vJk_tUn|zHs z%h;984hG#E5y#z|^W)iX{lyxlWUz#0i|blUpn~hFuLHxiFnK?8O-#pb4mvedT>Y_v zAbYqJ$sH4HLuI);n}Z&pTLe6~38L9bu&b7JQyHya;_E@I>)!e$rK)quud4-EDH7j8 z8w|MYsBT(6?11>u-&>Gj3TZKkOfeZ)Ld^qYv(PLjb%KmN3AVk>;F@P*M|ILW_Sts( zGSt5h*)NcF>u|sDPIcM@m9Y2w!s;Xo2MSckSX+1WmG5yP78+_ z-?b?S%$y5R+w9t7W?N!w(BZ=10fgfE8Zj|Y7zHt5u6@R(w|>?6OkQ079k+-DON>vf zUgkV4l?t3eY7P(*vi`ng;*R)sUB^Mk7nEnQ)6uw%&IiRAPyR`Ed5>AOmo2Y*w2lyC z+M%A=jTHIj1L_aE2s6OwPWco<5tS#&SFhkPM$=pj&67k$`xI3t%H@zt!370B(g>DI z!3WI{ixu}6L9qeJ%9AS1RZ|-ze3M8*gM&Z{Qd(snRjHrG<0_L&!P5$Uq7f{Yg7+x+ zb9fxoa(SrlQPfk79C9hgeg!|>2$oC1hZOt_o)8Y&0FB|r;~-I_Qcf!6vyB4e(mqw^ zHt~~wpQ3>J8zvDsCbd-J%%Ybcdc~S($dZY_eS^c?OvyNDs*x$Y?BFYo-oIjjJhQdv$n2Uz0t8-#k-NNC6iAs z?s2vKCUJ3$yye7Y`n&fC95Z;PdZS}@D$3jhFkQ!WD>MfxV{;%xKQ3<5CT>;JcVNqo zI5>`!9K)g%&7VxuHHO#DCe?f)5khO6%~m2YM3zWle$dXY?6AQrV|)(&9u6_a|| z-qr0fv~;Y5hB=M0Sf(6zokZl>X)ltnyd_ZkTIHyw@{9-A^V-5KD>bzlu;G_z zS<d8h}%I`8_OVE8a3h z()a*m_aaBbrxm$sD>CZ4t+B8G!Qj?Y6}q;o!e;vFy!({es!WoRP_cH%?-E1y5#zIJ zPRE5}8@O4VsyExKS?VwyPZ+qeyhvG{?vq6gNZ5u&@@i>vDT0es{Vv zmuBL-1Km~f5PJZD?#KJlRW;ELX>2a(&gNHb_c{wUuzOvXX*ni?)I8L;F&%`D&r+a1 zsV#yRKU69^JFu27sIl*@oR_iw$d~vs7!?8$D%I8TU{h~2;oMvRlWoPTz0rt%R*I|6 zyOqPakse|aLsecy)f5fT8VjUo@F`IY+0`vvI{-l4S(Bc*|GfZxK#<)>b5&NZW~4Q$ zgxwqfG^}l0)pwFi&vhHjgo<%WwYVskpW_88S0%FHL?K1iuArmS8l8gq&}4horj(S< zk{q7H1sL_;ExUJ42u)D0+pJ5+G?rqdUiG_Pg zC993_^nmPgq;#jm^6v7q3pr#$QZ$f|uF7pG!|;F^mgKOBkJZ^zOPF+gwX{*OSQF~Q z>ZB#JGQsxY>Nz{F(RT0m|LVLytHq_Q-q4iP59YO$Au+1+?}*Q~D9s`Wa;!d%TP5G6 z-7u&=&S!IQfi)~a8eorc&ra#m3VJ+g#t**s9(O59YR_qxGN(7u{_T9-0TYM2CT4jn zZG7oKE*-0J>u$bEm1tZ8@woaU;E+Cc6DEo6fHP9V1|0isD;7Rt(_e7V z_^Jrv)&2b(LkoZEFnt;~YZ@fn=SLlL$!=R9Ec?#*ehyo3qJI(iKMg z;L`0PdYUJ61$QsQ>Z62nokng;lZrji;q*%EF)B9I#T8$=&`?rlOP>9B+A6B+xZd_8 z4o184lw}aC0)!EX(~1KYQ?+v~oO$eTi=s zg{!ybZ*RSzGeIYhUBa&F4wakzr?(xM6M8sYObzk zA=O&updA24xm$%XG}`ngd;V)YsowY%4I??U+DL%IMQG=Dio}WBHxI~ zkK|p3e4PL0WTMyG?aNzQ3Qr`W2a}1Y$Q6i{#nYw+VQG$(msgf|=MSHqS(q<B+!O@ZNp^>@qxw+zCVQgf0WOQz9XlA%PHZn9gG&wt7 zoER*XhDQsNg^9`0(cz(q(nxW(G*JYuiJ{^0+~nZQU}pN`=9R!sO&=2~Cfo$(hpFIHeAckBpRyGgL&)GZV$J@uAU) za;Y#rTPO^b$}_VwGc!ZQp^3uC#Q1EfTrSR$c4D|#oE#pU8y+eQ4$sY$3$sI$g~G_t z=uByp^60wKI2}DtN0+Yc=&5t3i>KyGKh3T#&CE{Bjt;94vt__4%oT>lC+5b6$I7LV zv7yr3WNB!0WOA|ql;yFp^2|(OlzyEU9UGn~juyrzCdTQmnF+e6G*g-zoEy1OmM4aW=!ZgKaB{9NI#Qe|j1(tF z3Z;=rauh~KOS6U9k-5@Lad56U!$e?|XGY45|LElK%wS=(RGh&zK3g0v6vl_<=+Lq8 z*}=*3>}+vlaAanJF`+|;=LW}yiskXb?BL8$d1PdGVrG1#R4No^OMK+!&Sc{Kjj4{+ zoMPVTqc7!8&Odl^57u<-x(oU?P9c5HEA;3ZjIE7C;-+MxvpHCaM0YZg@nt3wyON39 z?p!=`Zi(_%^8e+F`MX$w%Xyb!&xg21lV@2>BoYJ3#15w5@aRObxM#R9KC@?Ja%gnV zL~*vbXQVhZS)LpjE)I_kClXlr-Z-{*aBpF6VVotCz~(16s1liELdJv5kuk?Mg&#@X z{3}bvGj}hZo_?rQJ|mkxN4TZ*$z`)qnfR*@y?(C}D{DVN51kGY4;>CLKs;LXI ze{I)D=ZB)_{_TJJ?-vhOU@#J;_Z>e{K6U2!z2${+ak+f_SI};v5yzW7uvd*ge&15* zx-j(n8~LtDzxT}SjKKJr`1j&s(17!Q$enL^*Ezn{lCBx?u{#%+rWO_s73WVUPA!)f zm&)b6vkMEB;2(BUmcC;BHvf_q$wvw*>l4@nNPwiT3s<@W{M}y(65qsJo&WdE^a#$6 zChkjojOTRXUR(zgA4%Me{~*r~;?}=EYWutYs|$LVGfm8Yp!xnKi{%;>Z#V7Y0A5r4 zB`LMYcZ@#B_l)#S%7c7dQXjU|za5tA2(j){minxu|JbM{NStrG9ayofM7X|WrcZ5N zU(zj>W{`Hf|08_=l0Ha$F7Zp`bssc4Mct<uVUt@JN=gGt#`)2Br!M?-?(gbmdGV_#npY>OsIJHDIeUeg^5+5hleZ({0 zs7vjdfME1+>8qlr`LNsFaZbhGZ6&N2jDmCyxb^SDiI9B0{Zpj6{;Q!%cYXVsEp^|B z5)3GoHp==aWi3&f`_QY(7>mCpRp4Dnj9brwVwgjl$){1&hhUd@>uaJ-=x+r3-WG^v zNv%1)khqO<^sUqftpttI8Tvt^to~MuuMf*7zGyw}dRb%ETHhW%+2-a*J~3nvgHQQ) z*kJxhT((jOX5WwUY0Pfi?>B;dB+&uv?z^?K%#{+*HhbXu{ud0lTYs<5b8WA`U7t@# zGMd=W_$&kGDf_zXIokeq`3G(6RO`R|`?=|X69F?Qk@${BxIZ@y` + + + Newtonsoft.Json + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..a957fda6f9d7c43cce30e912a2c688cd5b552fa0 GIT binary patch literal 491008 zcmb@v34mNxmH%J;Ue&9mmvnV^s(MLM2}^iXRd+%fu#>QaeGvgcF+oHYK{k0Y9W~>wqYUmd^BWaMopBk%|MNZfy{cE81n2+%|2lbf z?>+b2bMHO(+;h)e-hEHH@D&+9lgVUx9(yd4c@S5Bo9y@Te|8Z)RQv0p%wHA1wCcgW zv%a+IDOX+HUU@?+dUos5=d8T^((A8}wywPFij}Qx*RQ<#`jsc2bN;f-?- z9dXAA?a%)7l$YOpMSCEqyzPr$I_I-Toj8=+`=`&>4*luVe)^$@pMLzWAA0YfZh!9u zE4+DFkgXr&`3vT`zzer$G9|AXQi}j+Nzv=PdAZR%QJugJ1y1z*kc7c%Tv!v-GnuKi zxy(P%N%}IGvLCeoj*gZ`t6NSPffEZr@8`+kzfWPZxgO-t;(itQfAT2&Q^IH9rk`2j z6yA(GcQPJ-D^l;3T;YOf8(BpQlq!g*Lohnlcxrhp+6kcFq2!~#5Q>Tv-3ZvrM|aDA zGe28DNr~ey-5?lQx_9Y8RHnQ%q)!E)Dy`KKqPs{vegDG)<*{a-AO$LY&*f2xUPPeo zZ-pz~fP)pfMXOvhSWw=p8r$p7bL{(R! za@I;ytX{Ku5K300_fn(^MXKz#NP`q;v`9MUa9dMQ5% zQa(n?rzqVjq?b9QA!S$a%7re2@r$`QYOKjE?b|@L>Lf&qG0~zWdf*{iC3<-((^BP{ z(f)GDVz(VhY;#i_dO)Gk0WYLAg6eGl$UwN8grftE5eFNeEdsmUVC8{IcyWnl=x-dH zq(4gO2S*0OJ3zs?6DPdLkm5r1C-q;VstuKgT+PtVQ=>~_oF#W$ZLExgLlIRBOehkB z=oJu7>N{K>P7x``IOPNfUF?mHc;%6Za;GFU0hp+c$AU2)3&u!9(R+~%V8|0O@`Pi1 z3vS)e%JE~Z>^kgjx~doMKco$gB z5m$JE^eQJ$o}UfTjj=ezeSKdBAtB+oqdVx z?D^{E{vaPc54=3mCH*s+ogB^4VFFZ(DV^cQQOKJqoqRc0-8`Br=e%-Y`XwwW2M5W! z+zAAz7t#;AEI&(@!(=(^vW!V&%Q?%IT-2@Wll2w+^S3$$knaDZ#d4usoc1e?0c)jl zF?uakiO?-51*wXcm{0vI2oZt65qA2bUaeP*uywyu+;6v9_d_R4mHY3wdb3MVawVw^ zPz>us1C`Oi@}O59u#Oa0FNUadbRYxeK}TZ1k@#PA5Z6DV%=&jE{o^~C6Q^ANSXXJk zjymp=4A&WOQLt{nHP2_=fa|xOsxJ5dUCzJb>e|4}aO+ZaOhMcCkbFA>EY%J~p&V11 zN+_9!2zsd_Z5{wr-2u!4U}*v{4}kFmU>*Py3BWu6Dgq$7>Njg~=>lcHG?EElPq8X% zi}=+28-11La0^&(p%*MUWDo|cK9$JUFZAZ+PJ3f@=ZoF|3D-B9 zWp5uvF9prRT!z)#&!OiG6e@Sh_2!k=i{ve6U}-eaWhz&HKKxsc<~Y%tA0v3^bg&deHORpP_IImWj*QRV2Ef4AQaQ4z-Wd-xqk%!BDDhMr#V% zAB^-_BOg)3leF<#Z@x<8bV%9c@mgP$Vc+nwxWGgMsDlXSaQ zjyT?xs|2I1+TAv9SV|kHItI?_Ii@iWlon zR!hOu%=d!Y@a#q}T1C9GRhE0TVHY-QrTqZJcOS)Y7aj{v9HVgiZN$`rT0eG7)=@5J z2^VLd4ZCP1@L2;WIAji6%2!XQbCmZWGrL#+h0^6WsIQUgRi z7~ga!C2YTobfeiuD=7wpTQIfd6rZ^Bd7i+7lxE7*d}gY#rc6Vt{hST_ZW2fDQO@fa z?A|L>{`}~G{D~#z7O(XL4}M$c5PzivTTFypC)$Ut;%OD0G8&e>$uv*X zvKQ_nd&_6C!HU@puK3#!*1qXw-imZ>-beX&DpAXD^Tb-tlO8nny1Yj}(#Sk-|20>GDXlV;)`g=Xhke@Mw95MIUr5TAuG_ zm3J9m>y+@m=vG(+drjml1`)+?{u#4MD^QK zU5T2aoNMCa@uDt?du7c5rs9t{~rWF09LSC)d?c{MEI4XOf23EO8Xx|}~dn#S- zP9O00EO4D*XLEZSK3 zv~@nMVKd=}A>2GD@IprHAbcA0#uDl_*nK2qOn8E}%e!@FQcssrN`=Nnmd-_!TRze$ z9i8jq_i5IQ4}b2bUG>Ls=Gt{7<*07DT_87B4Wu=X%i9{G^%E87BPu^liUMFc$CO_4 z32CffffapJSSx$59F4(TLc^=3^;vasX)726vL%nEU}#+$M+Kdn&3h51pR!iiY`x~V z8^22~s#y$Nc-=4SEI5rBSF!!P%=e+SM6~<`L?r8F7YJqjQo!^L(@L{STh^@Mp2@R| z=kmvS)(|(xb3zKIPKPlwts2rW^tLG%9FK#wq6<$X;lc2D!>bJ?o+Yto++muXk+qS0 z;Ze$4_reA#nniDgAz*8Ulz?AZc=cOi!{k?>GUQw8L+5`qq9sof*FZ8WCNIp75;{nT#{L9HZi1K1Y>e@cq}pH?QG}Ul zWEw%WK3<A`ekl{1%Tf0?0%`P$iAEdDs){@$5e@xyZ z;q>>S7i9+i0d;em z7pi@|5M~7Q)p@bI$uvZ6^w)4*ebvwGAq_?C)Ms+bDLFuTm=2i=dLizs<-eaFZ?g4u z74=vVpIQ(TP`2T<1TmY7UU&sQ7rU$zOFzO893t%_Nm>$BZNh;3iO59zxgeFiAiM;Z za*N`^DKU95u0P+5HFa$eRlUNJ{v{HadANXo^WA+D1(@c8U-Z>=b|MNG_&V0L@8fiQxSRak@0@1T=z!B0>Y zXH7cj`0P@0yC9!%aH1!-2@HkB)p=Z+F27LKqkkbW-TbJR+V>0wo=S%YnrfVa>1FME zBJRmN=ke@Kxq=IpC29JZ`#nIX2AckOqp!+zTV1y4Pd54{`f0jjC`aBJa)8B(O9(Ls zOf_Vs&Mcdrl?^W=POPLGW(SMYUZq}~x5nNwnk~+wt+M6pn(5*^<;zaOvycKIV7;j) z9XMuwl5F-2FT51&CdS6aVzf!br0=@&D zO+QgFy)>sz&UdYA3gXs4$Uy@RJ5SCnwwTc0P%b#982+uumEcghWU`xZhk2uP4|Mj&JB%6^ z%cMW+EN~J)pEP1wu`0;l$1~}E=HdAD;9!}-PO)rR6$uX=yKR(MYk_P7|f zG+SBwonm3jXpV*d&HXXT6N2d@!@ncm5vZ^mFwbC{twf&_m)Q2KZjR;Oz~!LL+?V-N zvAQLEHbofC_aq0shd_ambET~BHlt#xL^pC|3K4=_T3yyA#FjOOlyl|$mg*L^OI3}s zQIW4w2;p*RZsM`W9*avn+$mCE^NxCDVD1llbrwVVb~W{8;DkSpuYoH((}3_wN}CM8 z;>c=-ZPEmp62-%aE&J2SYH^CWetwHFv#@1t4u2ybhgi-PZ(V^4#psJr97StR_qR@^ z(cAw>czeE_Ww$0<*sK_Tw$Z~X(xy0_@V%Ui8C=dL91eo%yzlteLx6?a9uoNuck?lK z+4h0EtIBkj6n8CMin|T3GLZL=AA!d)OC2xKnL5M4T7RX#aS+N=X@XaVSBa7N=>Vpd z8l`-7MzgF^BO6rKd^hh0TV_4KE`jxFk8`1+KYwSF#MM`>#RB(tPOE8Oxo*Ju1RV!D z(}Bt-=mgL;9jJVQPR2GoiZ0$KP{Fi$xC@A_2QCQWm@~c1m}YU&muMBb)a|rZ--5W0 zQNALr-@gn3u*o#+D-PC!hutQ;p0VMd1Y;1+X9yGzV-k?c{dd_=%Pb>%P3-6hVs$iZS| z<)Z=?t1EwF?k+J9quL$t@E1;2ka+}#s+(At2f*nGz&u#(+vDQP~Nb=+aV4ho&!a3II z!~yikhZDOHaiijtd8$AO6INH({Jwbdj|Gw z)=>0aI2Hbuu{XjT(OUQ=tYv=>?*ob+45IJjFRneas6qPAOtbsRG3Fe zMkCLDv^>z?g){vcwvV%HA7|b6aS$QXW>0DUStU(6Z)Cd&y;?a>1VlqR_Lcz)bIUtEti~LGk$NO%A>>uB`!=7 zn&Mf;vz$i>3zo2Oe=r^=q(@EOTdeXZVNnT-lZ2*tmhmj-Q9|<5@BP6sou+YsrcNuyc7CS#mhO>yqr_j zX)^mYIypxtcYiRI&|wZzC0#H+&d&q^aZ6aD82E&>>8j< z3+yt9el6W%*VPh#y1}-j8<+=O>e+;ul^k@_wM54I#^GO*s+rZMrd!AIGnXNzs|@cs z;FW??N&tp<26%$_Dd6f+oSrO?ix{G~Tz~53=Y^&Qx6n%d~AR$awFzwd%Wg+gh|1ZCeX1 z*|vs-*Aq0oXC44i0x%DN8xnwd06bTK4X8?ayyzVioS~kGR)T3B0PO@|o)f)!27*PK zc6%R-8*0+kts*mc3qk^&Ms@xfBU$5L)12r!F3YgYF73f_9eP4>{ELj-4y?NpF zY<>%%F*uvK6#gG%@*o(Na7TP9N6caNSed%OWM5jy`-^-F0>f5^mCS8Or#6z2CMFWlgaa{Rg?%oaAALfkj%L+O;vRlZAyxsQ z{26&K@LQ>Mylf1Wj+Kq4KI2C#L7dJmEj4P+FRKaT-A|4LH1f{N%s9yAG`CCo)4S*w z2X|<&CN~1n!vShCj9#}D;-}*xG@0-BWiof+GUVGN_xxD+9Qx&%K^0t|v+?&FGzz9R1j%)3Y42h96XdG9gr$K<`!yrc-` zUW_+p$x$lXXu=YOq920NcvcT90F@%L4H{>~@O^mwRmIN4v39&G`Y(Z|T3^tF+GN!> zFj@~24v%74dpk27C!n$T{w)b~&a96a&`_>PTQ-4gc-o&Hd#vvCuEg*VlUv1btf)0m z%-j&GZbxPL%yO@F70^_kX$9{p{=gTgYKf&&OsY7a{Zgwf5xM_9FgXqxi!oL{PxFFg zk0QPIfaJT8$Tl+wXzXL2mf$|leukep1w6VWb2{ye(esT|(LpnfrJnZpSU!r>%s6Ud z#<*9Nw2pB$*y-Az$^Mj9+gQPQ1HYBEzp`^!>-U?7lz|4+MzJhX?_S=;Xm-B!_gXhsgT~S$TSXNEK}mfku2Str;&ILiU+;Mgx5NfGM3|w zG1O8imPpJ;TSo|vKa-g{!>;=$Uga{Mf&MCZwNv(ye~&BVtJt(E&aU%X7edjxyW93N zh2~JqWU;XA0>)XnxQQ7K^s1OsGaSm6XZdW&pHj{LF~yowT%57&O9ppoI8Gx&E3C9!>pJ4MIho(Wgo18}$0;n!6U zMgNFUPxOx!&0y)Gf3i6Gr;66NVyS<&IQm}|&1~64|J&l|e^<1|5KH}k7DqFLxWUAt zf4(^S7mC)<5$mfHkipfaTR0K=OJVnq^tr?4`NjaSM}gU)mVx;6T~AGaC364l$eB(P zy~7fE|G6J}zkXbLzY)FfEut4D^nSY^dWQC-fNh_o?siAD7-A zM32dF4?SqRv$cQR5550+TzY>JJ?7J{G50EcTFxF*^dm_$c4luhmZTe%t*z;9z0nw` zB^%5wnqJu(ol`Wj>+%j3N9PrdB(n$ZcMDZ3yH0Z@2RRC0G&{vj`t$u=Y~LAN1U}F-wFmrVT zca~=p&!s%q^T^nF1J5UUzQ992$|;4 z1k*elc%II470=6fUd{7S9*z=ce!}ygJfjTDhw?m;XEV7eFD4DNCe(K{KrvkyEZZ0n^CTj4fK-onoBT{gy|!nQ8!uoZ3(IPBuyr5FNJ9Pmet7&gkf&vi(Lt#EtLVVCwU z-5~5zgqksICP#fvFFI_6O?go6{`eJ^{s@I=*q;%$btZ?caC^wn9@x9|7||YxP)dgV zRbiV_b=V5GmpJUfy-N{*DP96Vw;DEW-sg0z!&bOG?68OSEh1;VJ zyS#Vl6NFuk{yoN~V13S>bhH(=6KK#Li4T{JL?~9HO~IVG9+yO6J01-7Xng#4G(zPX zHY{@Ul^9!LJJJdE*xsddrzu{GL!}!wLe}ThgDZ)`?J-wwUb8z+*h?c6wqYYSeNJ0A zY=zrP9d>2!(&L3)iGCYnKbhF>%quRAfNktYv5~jtHYrJUw;Y?FfwdKJ>xa2__V4;x6qW{7N*_MkNS zY{7LfD4GctU4SBHSG2(Ed#1ZsR^Cf4+n?vPzTL6Y>~#n`fZ|NDddBH3THNgX?#VV3 zM#sWjj{iiSGkDHDz_S_nB|KN9;v3hqR^XNwwAgK{5uP6}IAph}4%5S}y9at-?Qm>! zYY<*&`ZqSz(86Z8B?}sCF5AL}7cX73{sgHuXPQgfrLn1$*8FY7#9u(U@Fs*=c$m1X z;(vf>u;?0Eg8!h9*~Cae>sR{CrGB`JX`tp^#len^&ww!HD6RA6Uj$)I%(YNr0Y8Fy zLH!Odd_QjQ8L4p!*GAt43rbesp5R;x@#Gv;H#(uts1nrgrLgD-rUXb}JU8Ms0n5^x zze%MCgm<*pin>K5^x>Y6Kh&uPajDRmUihHMw<%c=(lNA$qSKpzc630;QHoCp<}bWh zHMq^w0ac1~55GE*qdSx{FJ>a8R{<3YV5Ex?J&SJa_ zNz$J~<}k1&+SU)GS#tq^Er>&##>UvUMd+~RK1SJqLcrp9<@IwX?=&$rbYy}-m99i>Wpcc(hk|92|G ziC(CV?~O4rKuX1#aE}3&x$tdZN?rKVr7jYE$o9b;Yc2%k>q_I>k#6P%M(KV2N@j02 z9*vxSuG_%ie#7BvC`xce;+qbPJoVK^9Enf)t0192BlDsq9XSDCBM(`ADusUm;BPyy zhL@_NBB+KEkm-MEsEh@m4*^}_a8(cu^FU!kPx-#*!2gs2YwmssydQ!0B>X-YVgyrnOF6Pw3j?8CLWR$7QSu&+DI+?26k2tUfowzo40sR3`-wWT0W2di&`$(!m z4|CFZFN!~ONj179U{U-p1E*yHm8jWRpg9^#Z>7nUoZLd(k6ql}iVatPN!`+Qx&{ml zE=cv_sPFFcsvoj&%y7367fo`PyTae=w_X5}(>;q&vN~82cgfONy;RkIX3g6vmDaf3 z-iSwgaInOW=bqVcBcfgM12@*W@#Q?)ZCZWC2B6lh%JKDdwC0c>`k2hTTE9*m!rzAY z_cfRJ56ESn7cPTG_11$*poVq?Yy@lnN^gOQel~->raffFzSE?w{cI!1hRY=rZiS5# z`Kz+wsfw%mtx7qjmUU+_eG__{S`zi0FDE*C9 ze(S=7RC*=PjvX7(AXU}Tpn5yJ>SMnze}6Gtp^622R8O~aS_9A=$hTMG?iRT2w|<_G zPnVRss?Ixc*HCAB^QhFg%$1-&AHQ^T8qrLf^(tQ`&pStxjauL;;d;!wse*guC=Be4 zBeHwaNQccUVMXeMz17C8bxyz9cP||sAuMV-P}RHNw;f6ob6KB+p|0wZFyUM;S= zc$zcm9nf-iYZjGV^0zI;;b`b!K8S`WNwn6aBMzunxpNN3l1}m$w^Mm$W$R4`s)Lgk z#{ygYEd}jiQ99M%qg=Zsl#E;9W?J8ZT6+~OvYm4J84P}QlRNqK+dEd-=pYbE!S0i& zCkJ&d93_nj=TO#n(CA2?GYp1MKXs4rEH_q`Nm(!P_HllyeQlVlWL9q#G!1#tr8%dUsor6=M+d3F61B z+hp83<>zLu_^@kB4>j@N!%4e(nH}(mag5xIN5S-=*=}ou(o&rk76L7N1h81qPR@?U zTEQd-r~OotoO5jiU1x>IeZB!gS&f+XATaspR|g) zSPs10i7^%+0&0%DL^tdcLH1A^H3Kmv&td#6rEdFy3JL0P0K|2B$d9k3w3KlT57y%e?UX}sog}2 zbb-&9b2i1(pTDP*tCMaUA&x+EKA|U8lS46(I6EEmygMW@vY)0NiVL;&(ByU=f`e(6$JS$5J>vxSNk-jx|UX=*gv zcKx%Q9W7P3yXWw7soZ~$x*bC}EpjTY5Uqzhk-Dv`7KigU>xh22bjQ`}zT#jz?-Xz1 zM&;yrrEq_Fpc;2xyp|;$&W)$%XO4JrqIYwdn~;?a@OqE9XoBX1w#jQ0el=n_xWtLs zfCJa)5#Ap!=k6IOm@Ewzqtl6PojXR2KLSgeTzL&||=% zX+epepGe&U50N+JldXg5)_ZE@oi7J_10#B-x=UU!yc;{ZglS855pSZD`tz-C;;)TI zXA&9+-&@4Oh_I;|yOa~6*^M2v*rJP-Bn2&RX-r24+FIukiYble3>o$rEp?a#@I=-3 z1|>WTpVk=~yVPNN;&=4Ms}qsIt*HzGhab2M)ObPb4N9eIaRyyADd$^{_7YMDOrrjv zs3)lmRz`_e{og&4HK*1mXU9@6yKe&OJDLMx1g zXoQk7pn=a(t-nUswj|t+VU*=|lf)^Shq>|;xPI(Jc-k!bMN8TkBX1Sj7El{#pRb6Z zvpV79k!>r_RQE-MW%g~Dim)w=!w$I&6%bR|nD2+*El9>}!A6sK7rB_*) z*sTQ5t+Ln(%%59j;r4_z`8~ZRRg;U@B$11*utAEPoVq-UGc3D2fBbPJHYG60Wg@wt z$$cpMWO4;bypGSKH|38?{3WXMBy}f0hKMP{~#d7m>g?is5Iv zmrP9XJTN3$bYyL2!{>u>!V ze2dpX>{O$jTBMb~3EO>lDht`oWmtpCoYZOS|6l8A6SL!~=185ToIcENt(w@k9UZp2 zJs`F0wA#toay9?E_LD5Nl;6AeWjWjM5m` zaRH_$hP{p11Lehowk-B+_!N3B?#CWsvk$-T)hgeexup3(cGBIZ~SgtnreHUV6)0N8>ktNX{#9| zi#AAN*VaK%$zv3jU5$>c@T|iLWF#;+Bw4ufPR_hKA5Tem8G!c<@8^{O-Y_T^+(IjL z)EI_+ojH}d`tdrk4>7k+9E7iflg$-D_zJm|K%;(X&(hxUBE3*2-W>uxCJ?MAF`6;; zN!BfkUOot4q;AZy=3ID_d@KCyGqZd9>@4HUNH;>dv67dS`BSQfyTEA<1g-xT!?6}v z@o-V&ov1%9j$%hAN%mMLE@=5vi%3j%(DI!qKWj6xAY%0fZR5tQ=ir`Bxl*!-QDCAd zN$e-JtVg+B8!x8RH3g?)G`U^09C)hgZj6Y&^i=b6t_iDJcpu7!FHw17DJ;(FWX_8X z(rQ4?i6U*8&Af@So}sq1;lXB(986pjv2IlAXC}>odhEFpRzY=hgdJHL8-@XF+Zk_rYl=Vz&ZyjBGB2&(}_XBdZ?3g{W*x>&tWsxym2+S%;e|K%9W6okzy;&BKY%22r zxIY1y=Sr`Q(O6oz52#xLXLJAMCXs66&%gt?mD*p*ZtYV~3tCH;AzT=>ref8SvUE8s zhr(5;Ha%NF;C@FX>t0|gIeZ0lQN;F|rrNwxYrc^MhU-9=Y&4E7mb3Rn&mlOPE0l91 zL3BO-)n!)I{MCpFyWF=zqFLl-(_7FIqX7w|Wa1;VMP}HaXiZSCV#x9Y6G$H^a~70a zPuWS~&r*HwbQ!BL%yc(yamXbKA|>Xz}~~NbUOigy zTbD0Nw2@ZGnyG-I|E<>i{MJXiI4dE%cs5fmqU^N(q8Z39!D+CvzHpHC9r{Cxs)s7Blg+{mw9K7bTR(^TR|Dtc17#G_JXlZ-E z2E>hc%0-%*<+gI+j;oKqmR=uMCWshyO1yKajiS89xzhK7dYMtgt!q^>|KYhiYDd@h zWhSW2fyUfd(SG%Jb$5@m+kQ+%n}g{grQW)nqB^TpYmzPKoehKHA;Q)qJHy3nN(Z(X zcG;F2c=(ilzxAf1y0LU=k2ar(%#XT}D-)54@$3>SvwsR5xv6B9HZm(DH>f@pct5JI z`#v;%)Ltz#mlHj5qnjz3ZoIbued=U28Gc-5t<*G5KsRdQ}I=eO#7jHu{SWtdr@h1+qrz zqP?aA>#1{6^w%a-O1uRBE-GhpL*L%b5pO!#y{?OxixF>fkK?GNB_SrYhQI`E-%peLpq*x+Y#?Y|VFsMe3>JmOy|WNbLq4?nEH zNAzP1w6c0Ow#jDj!}W|ObkOjly?AH3l-c%!f*W6?Hz!HIZ@OFxi*~nqe~fgl-8;d! z1fp{&bk0})+tx`x>HwxC3nG)`za}w_BUhb}7mdve_Q?nE^l1a|u$0PPaU;JOvAq3i!* z{Qx&aGy1%WO7kh;M~pC5Ig9!tfllSR5Ubpoaf@&Em}Yeml)a_n?J^F?@n0p%Gh`TdQFe8e!z zk(^<&x6y*r6VV<(19+ z6xZ3F;;d~xA)9vhpoe=MkIcgt#1DNk!^%%5oWNVau1vu%!QXgZT+H8f7+P+fRqK@I z5|yTPE&zQ9ritX(idnt&6hQS>OTS4>z4hXK@oqJ|yX^O~_WNb~{VBh`Ny_dMBypUT zE4i7+t3AicQ&%QU%t0Az^iCP={wVh@H0K(y$t5bbx_Yoj{x9W##}fJO*g^&0ifw& z6LOZAnUhC91j5wZ$vdBO$-C4VBueW(97LEvTwOPJ7pxyCg$#fQH}lt@%EMGY`Wc=o zS7UNiAo^GQ;S8CvjOJIh<~2R$vG(j@I4@y6xp4;R|4r#Rzt=4IEVIB%I{t(FGRJL< zD-EYOL@rmcG@a?D%W&QIeS2M;68$?!8!pq?wxN;I-pbQcJ%U!kSn{|<_yMoa`T^F~ zcABkzu@hHs{+KMLq9oV4CilJOGGFmCnJv-{qq+9m7`au;?1B)>fy0+ft8%=~E~&1H zHHdZcY=VFug?~rmZk=;t_MoJu)(zq)Q>;5^+7~OPwU(sZHJagj^H$gX|lR)j$>Z+(d^4@se_m#Uxma!CkBuq_Gs^HWl1vRqGYR zCah8aT&$y$^{3xwE;uJye+n`i;r)fCk5^Jn_Ndth?%F1$G0vpzG4tZPXpO9$$Zj5& z-J`jQTh}?8R%|ZM?vZ_$g7mi@r95tQX#WD7!J1N2)<}roXlRpd_sq9;`0phHTHzvq>#L5YF=3 zU=V7OWHk{%A>=LLAYF}`Dz+>i{k0ga>Dg9QQ934ilqfzsk~gr{VuH*s=u@&ShO&p2 z)^i{NNz>42N_G11z{Xw|I67!)ICX)Of|kZv7dW?Z)ld$DV-=}wS0nm>@@7#Wpr7={ zFgH6u4D-1I#4v&D#AF>)CWg3m^jTD=cKj?KFv<=|@y@}Cc#mnED?R}{D<-!$c&DtGKT&BD`*C6hy`oF0IfYL@W7=l^s2BbfO4+t$+;nxSuzn)e3NQ{exL@HGK*a0#vJE|LePFBt^2+%!(UX z6^OT|YW*8oaCpZT%JomkYZUZDW$@i0NzEJEQgoD*Q~-(=AQ$tZS_Q zTYzIW&d)zmUCvpxB+SfA(<*JbSNR2Breo!93MA9ibP2-3ECK&0`@m} z&3G}8j@8;|HIfAM4C_K=)5~eb!A%!3)5+>EBP)=>V6GUCj|@^y5>h!uNG#jB8Zg`- z>ec~{rkbXv`xtL`ctENuI13^V}sh z%C{@XnqhSh400wFH(Phd%LSF7!%}56K6_oIWU7j~&nueISE@=^ayrbks^Wu1A0mIJ zoz`P5Dficrr)j9-^iVmwH+XlVpy-)WPuytl)KlYysKiD2G_FXMZ-AQ_!Cp#f!p}zQm}sKi?Lb zCL@ogZLW3Svz?kPW^Lm3WZuf0awgCQSnV%!@yp!#7-F+yPp+^Onp)2I7Cp3nm%kGW z#;sUvg0pVLLLh^O6R@cMuCDEzysl8KckSOUtb25dsJT0hk8> z*11b!9%`+<fw9O}j`QH0mdk_E$9Y^s9v!IV(f=^ZVXQe=9`UzuJns5CY>ms~IFF0< zIlP#y@BE&ASqWc4vBMq8m)q&?q)*uaq56g;nK+kWV{j)}?hTIg2HCBlH9E*+y}_lu z!HR-cde<$F{;3GVP~2hA+?YlrdKreb7pG~fY%jhodeBT~~^x5i5h@>@> zXV-}7V`lL!U}b9ZN1o-edwA>~6}u@LLa%VPI0V)xCl`{~$y zZ|rIpMD)-B=KeBvQM|TTsko2v%>5TXo{dee2YGfOSa`Yk<2~?@Rxd7dekNCa;a2D0 zBmb4o|4;Hi+xh=q{wtjSGxE2c|Euy}<@{fe|7z#|l>FB^|Ci;z&iOwtf8_i}%73x* z&&t0|{+QqPGDLWZi=9*K^UQA-GKJe6e7)c=aQ-LDe~tXz`;k0%PEcoq+N%(V?W?`9 zvGB!0VhLp|e2ILL%R^w+RkSx>T;sFam9;GL54Gnxgx$|uHRs^wxxgiGDK-B%G{&bJ z^BP_cezt?p>(IBjtj0L=Dj#E;S0xYOs*;@z*(6=VB>G6SeI(E)yPT8_D4uEP{>9V+z6QpvK+v*6XOq;3QbO$ zldkl=yeVh~5~uf9WU5Cwoy;IJ7T)G60l&=0cxBe)W#0Vpm}%bpCi^{sU&m0&q!*Z9 zL6*rqh!M{K7khgcpyR6;!n+~xfWq}&xQIBoD`(R7kJpy8k>#y@$djqpb=1qVkFMKA zD{)f>Q4=;#=Ywk0P*b&6Q>FF}yu3u^+i~}S-htNfdpgrUmyEMxAsWT%W=!Uw5gV!{ zZ$9KVT%joOwm})5Bi zyiKl}V|kl(OtBzZJ}j9xq#0Is{2I-yUhnvos>*3riPP=(41Qe!;8P-tH>fTjit8e5 z>LPUNV)$`g{!(>e(Z3Y2gRNtHmGF(K3UqR2pQ5?T?c)H^b*r~Cuh5q!g8TE~O@?N8 z2a|6r!PE8}%_kiaC*UoM;QoS3AaTA=DdAcrd~=tE=6v0}*n^;h=({NhRp51(pL>cR zncsR6{n*O=77;VDZ#d6PYr zcW5XxUZ5Jt9`jS3uW?!yMZe36IDPH z1M>j*X#z0M1+HqGsQ)ktaXzXRA%B}^fc~=t-8_^vnICOcJ?HfJ{9egPu$lfNNi;aBo6UBD2@a$Vb_B0;{M<|1~7xM%ll zcPn|Ig2%+dCex}!C?KK11($&L&gDzk;wPMbeV9CH%;5-FxrjPjUq`ZTB z&7(Y(FKA9@TURA0UPMlT-4Ev}Kj(FC)Ft%9zJ$0$=}&40iIRB|Ie4DQ!G97bIXGEG zcXMl|rcMq{#j_xU&Ybu8mgd)Sn$x;zPEXRDp)^A1q`BPE{3cG5@1`jvX>4vSgie|l zSeoC)Y0m7Xd18|0EIbQB=%jg;rNPv-`jon9dgtRp=%jJ$3;!LbIpF$&5ISjcme23v zGAT_9+lE~iLrbW8^*6E=HWjit4z#uZLj?X;rL;o)c7KKVF9FZ& zX3Wvl{}hOF`Sy*+7n*#nfHRt6`r(t1}p zmEcHAP`}>ime!|cnEu{_(rBMc8V!xZY8Tpv_1tU<=aDpy#ep*@9JR7}0C+A@WnI>v zJfh#IyNg@Fu{d!2E>3kZj>UnK?cz)<#<4hXSb|momDl)U9E$@d=;G{?m&JiocpMyy z1E<)<*{3`f2Ts0=vrl;}4jk6UlQQp99*euio9_pQ4@kG)gJ>)$;6Q2`Rk0mnn@9I%#%UnrfWp@@|@EC26iu z8X@Syh-J8H61&ww?@KHQ!UtlP#|Yyw!p>O%)J%e?MJMFak3HSdrIj0ZpTEYF%Gx5_ z&>++3t2BpOz;19o>KSzS$f?Zk@L|4)tTneyeKXlNo`_jo~KH^bd z@jE&jgzzBr>huhIPs_Zhtn3^-h@K7Q=qi5fqi_xyT}^o1H~k%FQmIhms=gogigOi_wTROcp<&%fovet!B2HDrbxFjjiYQpbDT+8V zi8x&mLl$weB4pJWsWTN(vWOEEaas~_mLdi$;tWMRCyBT~5yKX7x*}M{cBC#-#8Qhm zMiG)O7DZd7?iU-bD#ao@lSZE>2+b zME@h$jw6-1)R|?jkm)dg$5D!q&aw!FOi}qej#h*elSL?G+Q{GW1Vu>uScF2Ra{T#C zcrgt8`Qrt%4())}tNk5wN+@+=2^BIO;_q0m2+T!a|I&(5Hq^q2*+|h*@|jJrnm%-sWV`zzw`{9^I8%cM zSk~~`S?+3LorsIP@i?nVx1h22lu)(c#h%|?NecyX3udy-q79at`fM(Kw zAk0h2HCH>=j}FBWiz2E&J?a8{tJP2D$7U$`NrR@>~(05^;a;QWg*>xyBvW@({V$SSR!WuCM z%Zb1HSk;{zmX7nEmQZVfT)_1wdQ)@AxshMU1e0rY2bkafG;+a9&n77Dt#Es1nvXcv zY4#|uXkH+19_-Riw&o;Unh0~`;~`@0_{UhpXUzj{HRTL~Yh%~0gFZLiq#DOH2vASE zY6({zCxQCfLUQbg*}%c`tW}|$H<{J)b~Zdt5?Mz!xl~hL24Y+IW+U#HBx=k>(LW@& zEYD_MY;t=^(m6&ldzZ3INo&d~a!Q8QyiZ)`yH)~nlBdXNIoVLOX320mt;snQ;f6A- zXiX#1R`K5qR6@@BBgADsIYkBW`$e1^qy*%{_WdIR+VU0g0mJDKN63X6$^wJ95uxvu zqPK`RLcX6K^i~n){(|_3;dF>I>IhdGQzC9eo+sjO2gq)uj2|&2Xx6_55 z*Xcs}=E_*BnEMrw&gYX>7S@A{b#I%!^JX=LXr%{ARLJCb}Bl#dWPX>PMLGB%Y)_GVnR zok^M-l|~4v<5_Z5NAm!9QUWj!fU^^Tc>tV~0L%m6+yr2rm`{v_nU`BxWZ$YRGI81D z*QBLRa92{E7pXi#(mYR=VDCIn5N2Sq6;)u_YEFj#Kh5Wq9BMNCx^nL3@Un4LPN{*I zXT5WHA$0ic=J50}OCx(YPSZPw7eXhEo5Ra8Rz9+=roH{l;f2si}91n;Cx&NoiuLVFH>4+4mj@@LMP2GYhPK}N^`(Dyb#p3GQI6i$j%g95E?Vl zH{)>fb(i0)GxeIg0y!jt84BBL2muFU6f6aWU=dvFR5C;k2T~RHEx-=9{0>F^A5J zOm(xP=2y2YTr4uy7qS@^XfwN2w?pTj;n3uG;fp99i?MgenP*bYd8O059hVUoz7Xou z#meoUp?ampVKMai%F`jdpz9TGcr*1ac{PssAFDCM(VLh(*rD&Ou*mMY!(n`!lgoiL zq_PsJHROFzs3VhtZ1Y%0Wr{Dn4mQSIVA*VTe6W#s7=wi(2cICt*mfDm(D-^$ZJ6z6 zSA<%z(320#vf~$KbK@5dWydenF%5F;C5 zUwG7o-uy-4n~P&B_=pM5QaFh7SMuR5@$=AmwLpw(t--R1u|2=ws3`rA? z$yX9gSH`>v+Z;nCpK3}~jbkKGNO0FREohVm3zZ{i2v>B~rdTOBT1BJPSPsJexDsO> zm@9=8SMIpl6=zFz3*SYXw~i9$sZugAxP{7L^c`xYF6TB|V&1vT)1kz#q=-VVyph+T zu6HfrQ!ByN6}3eF67ic|M4j_F1}5COh~KJUl41*olPmomhr72}I}H??g?xb*a)WjM zo)6a0K2;2-%7VI)7tJD*(?t#xKsHbmEAmI-m3wsTvKnaNx!7GFyX;=r96y)&XUeqH z%2bAGDL7?NEyeR`-ROi{j34@vQddy8_p3=euibxX>@W7Yq`$?vWwOasV^y6pkJ1bDNw$XWF?PnQa|bPcU`= zL9jcZbSV_;e-t3|3ah6$4ox`-t(<`|CN|0=IFuH+TW@C62G>rMi{>@HlD6L&9rCzgx%a?d_0@)*i{*A&0H4@_W!m%R9c2* z8fOX#EmjIX=Dn2|7SZmV5FEl6-=Jxs7~co-dqjaYe6&_jIx^ z&DDD1!q=suvWjv7RNZp7zv(ys!`m`QZoV*E^;|?Ab=2MtZx=LbH;(QWAt)R%%wmSb zuMiZrL^pus6(c^v7gUPTwK&~$sjAku^TNpyWoEug$qSb`mz34Oh%|2P@qF6tl{Bk2 z=^C=R(V;uuO}76YzVzo;`gFeVRy1|^GX31f&p@FRH{_&iNbH%`uf<&JXGTApVFMz= z+7@%eSRZuzKWE%eJyvp)uUPNN*BV<+Sw>iw++7yCi~R~e-lKE}dJdGXaY??mdE=!} z&ety8atdlKvx&g|o_y^E8|R2?Om|h#xT&C6^EgekVGJB@yo}`}<-5h%d8{9&Z9lWa z_AZrSWp+$9vje`}ZG02M9QW?lHgoOpwVU#&&DHtJ4CO9vIVDGVAK{T{SR$F8U*n%+ zD=3q%t=#xE0;Jpc7Xm(Nfi-KF=4;K3EJP8rW+ORe=DulxXUuHL*A`}unWN=f8NcE-*H=(cg$@r_h zkV6U8A?H3PzjeU5kK+x(mm{!T%hW?>?ml6)&Tqt{TCjM`(|-LA;KKgf!8O5brwLd^ zu-!Oj+8I5jv|o&eCYZSnF3+4U#x@#lCpxZ8XZvHWPQP(+jT$dcIM-Wl_?Yk|uI@9% zb64G`?8E-K696561FJ3JU%;}&R+V_XYG1kI1b!~49X4C*ElSWI&ph%r^Jtvl1>viq z)*QyZa&waKHG~_X*ZN+<=d^;kdoj=VGlA$BGpU|X+b{#kBb$jqVk$1~CHs)R?U^%yUppi|l%{p(&%zV>POlD&GviR`>~TE}x-_vy zzU8$(uL3%=!__(-s)CfJXEKng7;n499PH(E<7Igh;^|zzwqbTE9y9h!t~EOyvn9Wn z6>g67Hy+<6-?xni3bixVE)>u$hZiavAEMHQM7^vcMTO_c_+iZ{Gq;AHLT#mc(~uRt z%p}i)mh7-Cr^udV(I)eAl+e3*vk0%syB*-@6UN;Jy_@RZTGp{v2`UospUtLR!Yg@PNoMymab z@VzSUsUIvO-(gLU-RG)pr~Kw=wXwxhnj z?X_wmMKI4g6A)XwkTRzly(xKhcuKVQEQ$ja@ zcoW5VrKxT>b70zr7Yte0U|62De=y<-K?!uk?N*j&=1Pl<`PP< z#m+bn%za&;T=Qf{C$&tdsbs6MhHLQc)#&L`Iam?iL7lj&JmBjI^6KV;m=4REnf;d~ zhH8aHm8sA4)62yGRHhO7KBm zealWSLB+%xTlS^G7wuMZpgv>u<9Nac=nTzLdC+Cg0&nYA|C?&97@XUTa-b1MgX?Q+ zui3Ku3o1UfWfMphIC0;shsr~}6&UJNU?{FYhsq!SSIxL2JW0(sTpq5@E-5eRr2eFs zI6OYv+_wZ4!8{q(jqRV9xM}TFpXF?G14W$%u3;^`B+L3|NfCPD|BTvl8nrSocfLl5G~q!;u(ev0t7%P6 zv&y+u;OGJsBm}oUbD6Cf^^68@w9HM4$NtG+RKr-hxP#l z8?^Z3#fx_9-=sjg%(XR}WNa>0qSch0-J1tjn>-_EE?bM+KIm@P;aktNwRJX)SlPpBj>TFbYTRqr(H>Y!+ zg{3q@tQLDXo5y^uwC+1`{anzk$k=+gpE&{guQ&SPn;21MZi_U5ufEPAzmGj&<(o=>Cv3o4|8;;dm% z-rqqXyYF{UlwIWj+3C!#pE(J>=+E2vgH9^y>=adh>*vsI|C<)wy%h&L%ts$Hg_D&3 zsC7yC7twoUfAnq!dojHmd+2@sK=gjNKYG>KedztJw|wV=;ndhSz3?>D0hc%P%L0sT z05#bU&_+=7YP4y*9tKEzqS14;GFhr}iGww>u3&hN#L=We8>5^cGcDrTrrZ|ZGMT44 za6bw{d^w)>A32P(AdrjDM*o#ccd=ht)8BfD3eR-bPGlRL_-8BLt{E8CH3R*v@1(I5 z>-|5py$PJ0MYZ?ed7hr$W+q9`Ou8qNWs(5lVY+7^8J0jZyGg)}w|9?L7bXA?I zI(6#Qsr^({bPrSr*ZB%7EeEpzcyDbsTW=W>Sq` z?|cRa(>``M&wRceEMA=Uc~ug};Rr3h$M?p>&$nCXq1d~aJkFx4g=oTTx2hj=Prll? zkN1{VJP)uVfR?-m+};i``3~%1`>LsdXd+8hxPi^>dCD5g+2UAqKjq9g1t|WuiBNZ@3tJR+Rx3{}uX1PF1sMfvqjYVcvjyJXq}~4g>QNLC_LWPs0u9 z5m?Z0biQkl6C|9ywvrzCKoC9JDsf~$tflnCXvh5E>Wi^QOVoZG-lG2E=tm;84Y4H`46HyRS41h09T^t(kw4`8F_TUyy)lfgdHh+E_Wn}0{j=i(-Eub zh&#fKiftPAFL!|ZSF>=ZBA!9#;|Z7YrX!~WT}3hE8z+~f=bf%h+R3q z$wSaX-oEHiG*9!e`0tE?Sf^9;3z$L78OzmhVdEviH>oNlHAmu;s`U#zB|-EaA$%sd zQw?9Lkr)ZlFF1ib=`U;-{czcFeO99qy$87oE8I^K|C5f11aQayl67WS<_NjWSA;jk zuQZ3Q+$Dz`L+VBNgThIvCPr-~-xw%Flp2f3*x>(PTswKkT)UzzT#lJ`xlkfvvwdHX z62QATBw7Gr%QNeU|$uN@4Bix=<5WYe16{Vonq`I>8M zbzk%!EX1gjyg+0;906xn1?B82W6#-VS7*kvv#UFb z#{gyvxZ;&mDo(FC2WZ<4#tCglMUJ*}McQwb98U|Tt^ps<5+KtI!Cr*J#v(yxU-I;3 z%acOHZy`X55urKWio>2`_wL(pTU<*^NaDR2V{q?DHp4(F^A^J+_~=meCKeU~tze;W z^+G_mm3g@W1T-bBn01P(<%n-ra=9%pCU6pHAJA)s%QQP!6f~_4?Rxx+Z(=(?DFjI* z#tb>ejt?QHZus7~1I#pfzf%+PHthX{iT4XxA$~h9-l;nc9q;-|XL^jn(ig<VbtBN9%SC0`RsEN`%Uw{v?=Hz^VIX4-Cp)q z7{QZ7c3^&#mZ%m^J}*fo*S?`5XGiF55w(3o1$&VL?nu51=>j$OB9GA@k-=o_D77>? z;#PZ7pU=3l@g{=BxA8L)UiB)kH`_koM(tJ85aTBjb@IynLpI$bV}bZ2!vP;aeV?sW}wHb5P(Ae6lh zNtpSo%B`delBp^d;o{ma4FtHD2pceF3(I5dEO)cc{3L zp2?$7^|w*=gQ|aLs9NY%`J8AsKCZ56WZrpdlTMj8{QRVUx^v#j`xE=0=dG-`zADHZ z7OXrcvELM|yeqMPFIf5a#6BD@e?n+|TadXpTzD?}WL22>4-YX@A$m&nP>dNV*#reWd!^!SViFJdCBz3p*MCRJI3fwRY!6_shjA zagRpfmY1k$(v!c709cKm7RcbyYO4LZe*+Eq?)1Vvw+u6%Cm8Eju5K};ljC4 zmG~a~97NY(=GGrc;1q_T4ICZvsADv+b3M5M!;-IGnv3@UT_HN2--ynqR)113IdY&M zRJiO^-EOUQb~zjNZn-YWO@(+aHv$=4$6adHCwk=Ze2R90Ek|fb*zwW?LA8ZIpe_1w z?4X6=q^%8EbG0)$sHl+~@3pDu>c>0N)4dM~jvj2opvK2kN?ASPt|P-0yS6WWE{Oz_ zlS#HXLGVFHvJ4fCQqYrLY4mke1Wq&Kgkzp!jSzXWQ3LmU$}?1)ZA>iYixR=@!Z>~CyACi(;@wK=j1I~wXbhQipZD|0jEJCQdV zleqD81mP%cT$S5$eZsIoG3=8>n-<965g2M)UY3MdtPtqMm!<_WcvMrF(3#d4@!zBL z*Q^dE?@kzEkAdgoPva4hJI9&SxTY)fX=r;_CvB2+E^L1$<-sLub{f5YRF2ms1nDg> z?q>t3w5EvVRakVz3H!`L2PLv)BS#nd##I_j>BVN3Xc#{o9QL5SqSlYq`CSL&i3HwE z5axaLctQ&E^i0gcF%$F1ImX?P`>e~*uhAb%l1K_`{pMIc6AopR4a23(yOaF0z}Okt zSGJXsa7h+yIhw?KIPPxrADy!eHy#QQxIfEl-U)NEtt_kxCV$t;f(tp5`Y=9H@%6-; z=ZoRxsIv1waC!U1Gbf+Me9T0`b{BLu=99r(KR%3Q#-BkF`U|yvm?on6SK?Mvo6e20 zdHv27rhKZz2sll~N59fJH}m&+{yKBu95STl2S9uDo8m$31v#xL0QOUc3J zrQ}qg8#z6*Bx1gjtE_=L}i#`v8_Ncd5?=Dm>j_y@~*N!dt=q2tyQ1r$ZfJgT! zY!YTK&ix7Tb^Ki7gLiYYhJrsU>Y;vtwmYwC|4=J;5hsBuMN#Vb*Ulo%nATH11X*_> zA8ty!j-h?B)M35tMxBpwetTJWTRkOSPFkrkYj^FOy!98fou}ktP5tX9a5Nor^q8E@ z@asbzQ*#HjrGT}xjQel!g^>#6X1Y2Rl(Rk~?69F=?yVJ$6?~mN2vEMZl``m(W)dqUu zieYpYxg_* z5QL{iU!-8dQ#Wx7pj9;Cw%C^IG*BuJpe|^kgwdy?-wLGLY74 zp@FLLSCojYmT?%3JFDj#y`xnWd)lN*R9%1Sq&OF|(Z~vn?o8F%@dreMTmM_=%xwHs zCC2V|3t<)juSfu90e}X&3t<)juSx)B0q}AGFmLqc4Kho?NJ-DMxS5RZu6;K= z(4Rk#9yS#&$Tk%{$g=QILlhccqgW%>g=*25Mv$+@)8;63d43bmX@LyBfsBW3srWD? zz(&VfM|OMkr@QQALOuMcCF{{##DY`}L6vLEElG;|D#h<9MS%<+vGP>ga%&QT9wyg# zP$2{|c(hii;OgsuSQ(myy?T~`cX4Iu;W|ppQje}IU8`)Y4`OyabS3FJIgjI!U3dTU zypXlagDi+1xnQQdBtA>dn}f+;NW$&vE~bcVtk)Xf7hjlR)S_cLqx@#BC0h4f8b`_$`j+?-XUR zMd8p0muM@*@8$Cc`2>1jZcg_s; zPs|t@YWxqzRn|{w-<&A44?WX24`rrf6HNTfyOFSRO@14xsf zlMu&f`B@p6pVbrfE&oZrhPOBVN^Hcq`8P~nD)_q$c0Qv+Al=n{p4;)wg~Z@S)}NQm zYBLTcbgIqRh?6R5X;Ghb#ww{_{~!U?FP5g0`X#HYU;o0UI<+0M$t44>PN804bt=f* z0WNmdC=bPD= zZF2G!3OZ=vtEFvw`KUhLw8Z#hL6jws6SgjF2pi<+UU$jc8{g>478w(+4jEg8KiTkk zG8t2j5*Ztj)Cl)OAawV{4`za)maGWhOj$7oI9U<9O;#LJlvBxr<+v>mWfJ_DlLzhu zHF?Nm`u(zO=CAmFTr}ROZez5htKcY$C4~_O*(^u>@CRhriwqA?Ytqja@162m(&^RX zP~4%o2|Be;DE-za4?NTly;?H(M%bOYG*T0b2G^CAuFA#hn9Dj!dYr@IY$wf_`e?$} z7dvnA!L4&jw>XlIma+203aXIg-C(!~T8Dy${V<92i-J*Jfetpaue1d1j>~0^1Pv}f zE#1go5>LQvd6PQ0QseocnU>uE>fHYwhjs2|QQeqluR47~e2q?^YLVk&z!1>c%^3Z? zwADi1_o{a@_(0$K83be$sY^Yk-k6{?3xGEy0JA8KFvA=p!`TF%2HX4$56}gO)b~e+ zldFhs1GS037E0|EgKm`UVT)cZ=pk?~&$#B|UNX6s+Z&5|)z#p7b+mqUF@7ePq$|La zRjQAS#_W?6*Pd0p{89?Dzbl_S!H`cq!N3)d@h=%9xHlMT`xP&zIb6a5X^~|6bNSSp z3|bXE1YusCPrb*W_hk!?v_p?)v)Vr}L~*Irba$()fecr_#CV1Q7a&u9kJbt$h<`8U zyAnb{J*>oRxV2D>|nNn z%dZ{Wg&qB(#`9B(k+fB&N^F33pJWNTc1BrqbgC^;p6OeBmV9o2Cp`I7nYP9_c4l%iT5>&L(ibDct&H!lEg z43edJ4nHtRQH((r7iCu5aVxlUdj=^+2ZIdIW{_cU3{pOs*9E3Xqx{1kpFN+m6o2k% z^XDSsi9htc34dgD{MqLDb1{&nevCigY4NAg;*a8__#*{?+NtozaG`O9w=pOtx4GtX za2j7^X3G*33ET`rhD$-9&Zmy;2vyG@y z&UT@69p+nU%z2g8wxZl70WXBLpULDYPCvHj&J2$vYlrhPb#Q(LoB_l>lk4IAiGa;& z((Ao}HSO`QXe<|I0-ItmWcYkA`LCX2Iyq-Z>o81B$h`-5cNiEbItu*O zGu__SZ6|5e@2O9_Frh1Y9@!@&^K)C?LhD|MCUK80nXGK|;|6a01>)3^>=1*(03ySL@*Xd%TJaWi{~9#~K}2Kb@xM?&2*>Ufb#^Bw6lPuf+Q%#!D!R_4-_!>6>F z?zu&bdrDDd81>C0=24X_9Wy)T&}`QKJPB`M!9V@COgTUk4pQhj_(Su!V6>@i$V zuN(gYdZJD?xJn z7m|ekn>$2HJ{_Xvi*$x)HQv_Fh!ggfd^s;iyOt_G-=>}I^%;Csp|<$C>afRM@dhZ= z#(Ueexa=vNBzulJnCQdVxK?!C+op@5*3RfU=ke3UI|QXhKeK`ku~#~sbZN)Lg=^9E zg*II*G|iyv?P-3!VtN#Xgl&ZD?OFr?&j|mk3WA) zX6El*kE8tVfBfk!otYkrj7k1fpYLnen^m*wO-DPkd%`-agKylR47x7GwKGbmv))LC zUAR_#zQ0WutIjj(a|d0!C)6EuNvIn=GwZX`>7+}t?!vX``eK`|^*g6)_k_QLE^B9c zXVRr~I_XlKXjr%wU0-U`b@0yV+C8D|pi4sAm_L&)rPE25WZ8u?x^6_izTBpZ_353J zsCM#v==zH2N)6jO#+8rk)=*_2HLjFGl!huDP1mEY zYPZVht8HHFzjI#PzAFM|52iIxYb>0}3#HS^i|bTI7Oq9t18usP((J5^a!=fy4y2=u zmW!^wnRF?gPP&F$;f$_xD5KBJD5H+C?CuSFI@)>-dpZh8;~U@Bt1bLmn-A>B?Timc zJbpf`Q2rLo;qzk2ZAI|7HcUR@J zd&9rJ^jt&3ze_p_NCQ2safO*(rnh^d*^!<^^En;qNeEqfx01ha7~i%0oN6fkBR!V9 zXBYg|+O^B!<~`wP-HYSpazuM7G4E^jIhp&&p$5gKq;H(rsz_nP(YVVxvU_6MQAZ@E z9W0SN?(TSK_r$LwJ&9jOdXh7r-ure`26v_hecN|Y1|4&K$5XLTN4ArcomO4ao+s>I z+^!U^^!!4CmEOqYj?_HGN#mIsZ!Swxh% zTIQMaOqtZIcLjlDc=8ltr@Xevhhc z5KYOhwJGe^$j+2i@atrk$YXz@>`X@le~Ij>AlRp6|FnZ&E4xGwcvE(!2@3yW*(HV8 zx5!RD1%Hw3l5p%-%g$1v;4hb5f{OhWvNN0&{Ce3X{MfIM{eB0(QFh5P@K?(INe6$K z?5ZEYZ^r(d8=1oi(N*$L6~ulM_Dk&EDjYA6hbk)e8)SzHMR>mKs@m9JDmzpNex>ZH z<=8Km9V!I>H|!X%5lA%v`>SQQ4mOBxb>6oKq*{abYh{Obiv4=oH#+$1WIxg1p_AD! z02w(WC8}X0P)k--XCO86J>)Rkt|+cXp_3cN>k$3!^wttuxTLU9Th)D;?q#ly=uVQi z0@ok{E?$gqw{gyOHlK)kRd$xLM5ns^e(GyhywA&OIpi#& zV!6+4yQS+O#PLc@*LDPx?^Yrj-a4G_Ca3oM8_+17<&BsRs;y|OraiI8QQ1TMBJ5$r zAbRVIaz^8lv7X%Io<}8w=V$D+IbQT+(5@_j61}tNKCyj^DVH8bUhO21opeXx7vv z0qd-A!ZBC4)p{!E>!L@pa1``^AG~4XL3msm=*|V%_-9zHIqt1hi>4UZljmss8{vq~ z&gZTwbo+}Kez>hvtmphS3=$N_n`&l{^^P}|+BcP&>;Dm>%tP(;lGH}lhe0D^%usFY zqmhH!`fn)~y#1~-8{`qHfhf)xl>AXq`c3JO+O zIy`@CVOk@M;cg4e-OIy0TZ`4DTZ@CswiXvJ-&!16vbDH`7{#T;C@v#Lary9qtwrv& zEc45it6PiHn)59&3{t?UEZG2zSEA)=PE(;7+-xuCoOqo7?1+GRnz z7K60hHLY=^52Q;&2$WNxoCV4)Ce3ngS_3?vD4IUxvMg?(^Fwg)qihT*=clyP2 zrE*v-?eamCxI^2qgEhkrR|CZVB7{G{^NaL=0x@st_zkUfb>LOO)Lqa~UoyE( z7_FVsHEU`02ed4t$Zqo84~`#*jw$7ny>WZnazypQ^pcs$Wganqu@L{o=yoUtuE2Wis=-+UNH_^Y5)#=|n=Jjt-!pJuDV@=KvO#enQv7EMs z0T^YWIOwZt7w}nn~~n2iADtKI{K}jjfX6;)cQ?Mn~XKGC~7OQ+P-+p?NUOw zLMh2`DGm9Qwr%hceCTO)E}spepTP)EszB?HKt(TzehSnn%KjLeDaxkxvKPTKeR-(Y zA9`rYR-#B`eeqL(FKzMFbY`=Fh}H3-lkNCEr%tx0Go5S^l;~uy%LE%-(m`fLX3ry> zJ)xnkyJQ9BbeAL{rebR_D;cTSS_wgsQ^$6G;-&nIr{?Emt_zu29bx zxcLejHzFwe7~UoCgje0^oDR;F(<(2jr*i6Ks!AEsdT>W`^n0)|(Ba*|T>MAuRV0QB zC)!1!en)3T*@?;gU-Bn~t;AdD{~(#VCLB&gDqci*!qCe5|B`o!m^iLEsW35VGjxWS z^uoNkxtqw&&}@z_2nLzUG}g9+M`PU=z$4ecTb3-pzGvs^Fr9yyJ0aiCKa}q09q(h7 zD%vt!Su{(AdxD|Hc#8a zkl6!TKO=eeiiUNTE}u!(c%Y-pj&(vttU-`k!_<0?1sWP(IhlWwA3lY;r=;X{NbLZD z<%P@oJjEJxFwLQ-)(w7XVATP+i#+i+KAsD0KNW4+=(iI5W3rd4*)D~QU;@(W&(;>9 z)qb)#5#$S9hJ~vTy8%uE9DQ`#>T-57oSLWG;ojcMy)v9UDB+dkQhW?+nx;hQC*xt1vvOB7ULjpWl;+N(*jR5B%=nqooBWPK+vwPx zkPW)?PFHkszO7YS@5u+_^G5R4nRSOYyVgUNb}!ZqFlY_*!{`h%f(++3bVem}G3M(r z)8C`Gwcw?3!wSCZ`4az$^YLh`Cp$Vy@Fkc;^DJH!x+jDyO~S+`g?*k%r0ByIEo`xS z;*gnPM*)Pk&|qq=jnj#y85?D8sbDIZa<+RSm>Ku?5a{AsX-X)3dPs(1O|V{;#vbiY zVb2ll9RwQ~E;W|T?fo+I?%siS?YSxXb)#hCZ^{D`Ku^r&2vE?^Jda(ptL4RPZnT8I z(a0kqMXZe8c;B+Swqo-8iHNwOY%jDpC2l8v>;K5xO30_i&n&Q6`!u61S?Jpm=1`vk z`PoS`^0Ra^qKTPnN9JdidY$GWclZU_cW1DFt~zTf@0;l^=P{WfXRIccMh0x@RvqUE zjcK;xDxVe>)PdRx!=Ghgg~GS6^6RK#0{pEN=I^qVDi-rkvTvc$8W@>Tc_)v2a?-S( z8qj1ff~khpHMG@DtqQ!pQ05V_KzzdjbVA+$?yLCiB4}odM=qv zh${mY%Gk3?r>3E6WG!V=VGzAujg0#I$L|ic(jYO zRjsUUZp8eR((hOg)mrTT+j?lSfAU0Slr%KPVQt%=-LT!1lI!^g$5u=}>8U;&4wSll z)M@))E+$&vqqc+&mcH&I@Pubdc)v?!mWww~%G6?}X!g1=GYG-sg8{Goei(n0;3L0D z4=Fa^OJjlXejrIaj1FWDnL1^_E%XW#TO09*x#Dg*&J(_)xT$7kc1z=G`CKiNwQW1u z1A9D86w;noDIo11khEjIUna8LG)rl5OZ*kUi~klc;RbTzkBC1LOfHt%l;|`ernQOG zEwXBCbiFDa)32lbMU46n*qbD3GU3kp|Jv%wIj)}Y;Gl>?5WpDSjcCuPI-8UvvKwZO z2FGs{*F}jxMiIOHLTS4EmQf_vPP$HpL(xt&{807h={_cm8F7Hq^)pK{OAd77)j6dl zbNnt!d?(WK(Ot#$(sG>7kQy#mcxSsh#QVJDS^S#aUOf8*2-`_}u~_ZJJqonr_QLI` z*a-t0=*-=89LF&6MDW;E6JhfSYF;_-F4InCBViGHttIxL3>ZdFW=+DD>fE{W>%z_N zr1{~1kn_JoE*IaA{S$Q7bRQlu;;S_d1?BWc;YET!ED1Ila(h|76;Gz_2AaB8`~oU3 zJ1K&4ulQ3zQp)AWf3UN7$0IeD??yb9{z&gXJJY++r6(xqu_QV>y_xYWy&c7)Q(D4^ zuc^$oJEb-#)hRVpE9jKko>uW%os!l>HOFK~N}r?wpMQ?YIGMBGct}%?GqUwk)}~ua z7`0Q$yCOGbvAM=8!SM&-m^C*W+x6Tmv`ImURq(9Y=wftkIB&nMu9Kpp$Y2YCxC%}6 zm6NZQz)5gjl-bih=nA<8?MO`hk#Rec{5tUa1*ZOB$WNbVP0<$xgJGC>9ws@q)h6yQ zaadk2?$T{vCX?X^;;Ax;j;Dy79?BBZ{E+x!IyL4S_GOIv)j7*7@$Hb^2)7LAN|h}i z0fXI?^LAW~!zJAU89X{c5^sy!?Y^^b2H$Nlkz!mjdHB;jcV>4(xoBEMtN&dGjXTEi z%bnoJMlTc+;!BQ(G5=_^-0<{PGZ1O!AeoYOq7D-}zU=G6!dw@Cjf`ykYx%=m@f8Vc z`~%Yski%Fd=GOVt)=6Gx?=7c>Nw@(WkCW&^{WwV?%U$XS zTIV=P@c0P88Ylgyx&GhE+z=)2p`hIxt%zh`ke)za94K+m0iCri78+Ta= zONkBZpsvcry=uaI^^6DQa5Ae!7RhW&4&5DGoOWg%6+g-K(5x_B*?|))BQQ-FJ+aD! z<92d!)x`l1n;b=6F^3m%&xx#52LzZ4BXliZmzVv_zhPkoQ z>6s0;x-w!8b}1Dau``8)ghBDK;99L~F5DQ@^7$U}$#9(h^9puS{QWOl0D39kbNMD- z#1H#u@@A_F-I{DW3(Xe@S~btwv3SdEtCE(dCK@-2B*PkSZxz2SXU)wDFlh1pJusGz z!!xZ6ypubU7^=GMtzT(h$=W{UISXaC-`?6!60T$#YV)a8_=l~$&3zAyaPQzA7~#87 ztY^h9xid)A+0Im(Ozl2dwpnq~esPe2w9NmIZl&=Xu+x?`#kCyqY*55qX=b8*@?=UR zehNSG(@;fzGVyz={Em|!S98U*MN%oTd~L-1EBFT*$K%bY^j7%UQyVJ8Pr}`uW5BHn z(fD7$@d?;g`;qpxwBY3YUiAFTYOgmlwB_*J1AsI{K1vGJ z#xvxxymHfjA&MhI^R1p%x>Q@eLyH0}M~6>G0Ox~v+JeC0U9^nP1a+)VlL}9}5N1}8 zceTk~$t7g@E?du2GkOw%bFq3y3AqW}$lF4@Gi?h>cCLf}7~YMO2{|p0!J`v3bRgYR zlo7Q*+05HW=Wmi7w`LG*)|99_S6`EhwLYKSZ$*gyK>nG&6UeqN6LlIn^t{>lXhM$U z>j&o3aZcVzoV>&1)GEXJ>d6mw1`ceU-K`zlGW+|qt}`IolSPz|kt>@{n#I~uMn;*x zlNZ}u4W>}uv;FreOn+yJtZx7Pf1JclHGwqs!-x$n!)y~(K-tkO%r>WGSE9cowA#yT zhI<7w{}8{Xge$c#ueIQ<5Fj(hH*pp}v?rD%_be0I?UJLXsHQ~liPZ`dObO&R%27UK zgI)B*pMqat=vB{S2R|qZ_?T?d}VS?e5F%h(?oAt)C2+)R0eV+r>UYFlC{q zAym8je}kP|5;CQ{)c2bFWm5Pq@l@GMmCnhTXOb|izu&HC`zwB~wfr+SwU%jJ0Il)s z%acLc$s7||7%KGt;IE% ziG*5Q6Akj=bOD^7cqu>Qsrk9FgvQ8{e{=!7cst1so09BYwke@DdHyd|SXlD$q!O7$ zZMy2vKihQ(WmT&~D7hweNLE*exEWim{uDZ?*`|K5-zYn(va+Mynr+@ByXw&2;g73B zjO%<~EL3IkEC7-)DP~@0gih@Kg56A=uxikZ?@42xv{kB{Rua`?nfXSu7EPs+c z%csd6FR{AvG7fLAyr0h7wjgbcAeodrA(LKQoTP+JNeVJ4A?c9GPb4yF7KHS_5`b9% zd@=!;#mTt#o+S@t)`{_nC&ZnK1z z-13$HC9s_|9NN?v@(p-g4f`iN$gAk|OSn9!)5!Mn!x+p%0+I}ryMpUJDic8hu zNhr*(Kvt$HgNVZur6f<5wYfQfxVK2MM`@EdN@9`2Vz~>Z%$OP4`x$q)2hFz<%P}IM z%f%8r{xV#xUj`FIPxCf@YKMB31XFU_V5|8WY&1g>5_}_rRISW06a@aFHr4UB++1l%IS%{W%q_aEF>gh;8?uwmU(_*DcvqV=Re>Fh6s)>TL&o}h{wcM=9%`@~ zDHPQfQkyvdv$TDm>qn?%`ch*B@wcNrUPT;&__{y$982lUHOHdKGJNg!)fx!b@2jP< z_SH2SqFwE)xoAh#XmJ&FSDonuSGMyLsP#&E`cEZordir; z=Kr?a%(sC-ZRQ=AzRi@?wV4CtO>O4efi(4l{Z856;q32{{hhKa)m}oozMdvpy%u~E zuGDz>6?nWAKbca%n0Prqw4Ih@FeS9EJ$xTFgj?{56BUL{HhEgt|89Arw}-J=3sKGY z2r#AJbw2{TBRKx5YSr@y=)6V0!EDOayvyR~x4x1vvNUfOY|v7rf-$O61vA>Fl*@JZ z0-5}ETO3;`Q+vxky;#%M=KFjrX;<!Nlw94~SSl7SVhSrNf>?%wj zwpn_%tleewrRs~=)lpyCV{0*OXJc#m?_g}L4B8k*1SMmb9qQQ{4edH+h2`p)B-`qk zD?o{l>X?ZU`EX-v=ci(kpB0b!wa3<~E7U(<6=xUcU7MD9ZLq4C7kBb{j$>FNxe+fLLU#pU` zG(RBNVnafe{E`xKD1#|wnq`VqeH5y6Rdh+7Ns{ZYwt@Ky*i*a6M?HJ;rAg(nC#6yu z*z#%0(Y8#!Lw4Nb0s*x^VeHo zy1rB$Q~o>ZSbL73a@x@x!Ie2@L6iA`OgBdm53GKPmZW~|aE@TtUVF2AfebRpuh*DEndyq=!=b|4dxWQb2_&kbs zc+c_E7+Wbq^^~TJVDbk_?x%Bx9vfRdxz{OF_?dX@6l?Se$W4Yejs}jKfhbpr9>N%< zQ5U#7A;!{clezE86!N^$HxsYMI9lK1MTrbLg5?SiX;*qGy%QAyW>O{P!v4N;-|#;B zt>AaXhW{oymdHts4sO1aZ{j*i6Y$uEdz}Ai?%rmtqhE;EbqaG17Ds+|&68b9RAuEL zyD7$#w+K0?+4ws7H2uG>_yMftLancHIeRD45kymQ5^Fin17YX~oBpQg;ak?$yaG<}~qPnNd zE6|SWo`h=NTm@!Sck|v4uO2(99R<}>QZ($lw{s+3PQJ#*7gkF%a@8qsK97~|YESLy zU3K1_8Ggdpa()jU8{~K8SRcQKjP>w)^%%;b!>h-$)!tf^uU98ufGn1?GlgVEa+W}v z&|God*HEdP#l`LO`dKKnB3*OgT->YN#H32LCCA6VkAo7^}cfNXxPQXS@q7Mv$ukX72o61&@B z6%E_~)vYhPeUa=u!RXAKGbgx`ZH{V)><_OPAMBgwP(?S;PPjH;f@e80<$So2E2uL0 z{%T*<&8G@3B-8AwO^I`x`U{2n(d7bq`T0!=pImOJWUc}t+isq9o(iZ`Kw8ho*7zKm z((A#zl!UF^JyNW!Ig6v1YuM@(J6Z^+0VxE%#p-x>Ust);=&kV*m$x>)B7_J43d{Ej z<9urNea@1Lzi5_`os+ttydag*!p5hCQF61;jxood5|Z)=e5-GKA?1d--}$wC{#Q>}G0>=h0Pik|Mqo)9y@AzyBnf3$~%k101cNSb-yv*qP1RMsjuQ zGi$Sc>9q6YyotgSRV{^2$SC26Rni-PLY;kXGO%VMA zZua`zw6O=#qiPvgwYK3~+oN%b1{ECrD8$d!n4(mS&vNGCao(iJ^Wd(oj)^ZeV1L)_ zl=m55l&>$y$LA_US9~GuMQ)_rH3#9V$4?9<_dS(f=Eo3IKO!&PlQW67e5}?uA5(*y z; zk(_HE3c2CYjo$);dnW{WeKuKM-C0*A-bjF1IR@Q|v98?kKI0d=XF7Tci*10h*8}%3 zGl(t%QA{UXS~Rx0u;Qnnu=b86@7K~Y)$>Jnk;>!-c;?!V!ZH^k8$E|;^#Vhq`x&r| zq=L*%;H(zq(Bqg*){e>zUp_t%Onz&Rr0n;v-gu8N=7ukj$2;~;JeE`vk4wiF1d|_X zd7#9WO5St;;BNu`8pmcdAQO+x#i{Q6@aY>J4^^5S!_I?WtQa%e#~B4jv2{~+u4rmU z%_@oE)8&7<_g_8PfTObl?Yudx?UyH&MV*AWhXrP|-sosL5t-E+Wa0VbovqT;zU3w| z$IaHs7%c3qaB}XzA_EW2-n#vS&IEg3-@4??D?e_k`?YMPXWL@#!#G8Ap`z<8?g?@> z)vG!kv5<7=#q7@sLI;D_b~JyJKX27go~7iG-NeZr`{bV!M?DzC?;mX^x9&{NJ1r5G zUIh?D5$viUE>C9|j!|?-W6bWw}Z~}|! z(fBsiSSQ@RiCGx2nOiRno5t5ZZ+GJinY&;iqs6!jt+HUr5v#Z?RDt-;- zUB*!qQq<0bWQd*#E)+J&u)I-RtE%<{FF`4SA)`aeg_V*zgJ^D?h+ zZaWfE*^fHz+!Z@I0zGO+*Amb4FYU;4xYuZYwL6htN<|(m1(oDT7B+XrDmgEqB+)W_ z6wN}fKHRj_4-f0P#>bI}tAfb%Cec?8GptwH-we;x(d!dHq+|awFW0(y5MK!^I2a%O zMQNDFi~!FUgSSjRRpNOqNj`9?#P30Dsdczr`G4NgSs$Lfb*Ffsq~cV>S+G&gLKGTz zgTQ}Leb?8k4EuhP&+a>B%TojzgW7o3dYD6zsu#ULH= zTC%1;e>`Ppkpq7Qn5Vql+1*+$+t9(U$W)hI{ay_&$qMIBlwizC62&17ke6a|;)DZe zUzJYn%|4Vn)S*zLVWmcMAgen8>1FV0@QN?9&v<-K1+f!l=b+j4!EC9Rv6z^x{!(GZo2)zfS8yXc zxM;`wN?|IhQ=b$5u?HmICa2EHSlPWlhyKF6Oc9(+)u{^&QY5jb1O&Xmgbh!eWe36JMz?o@ZfZCG_-IpD14`A48c@ z;liUp8NWa=E^zMAg@KXRxC&rXaX8Ls3a(Da5Ph($#m^eW67?xX|IM64?U5#`-p?Yx zqw#8@L`}uxRvvg9W>zJ9<03xb?v4*nsACCqU!xeOIwaiN;gL-PUF~Ef%$x?EUgg(O z$#aY|@pW7N7}|;bItnC`*kLe}Qc+>n`ndYQGRQ3vLEef)S$&}hc-x#=ZIPqAjWk}w z?^X0l#&xI8?di=rem^NKL-DnW)CqdAK-O1Lzccfdr_k;=GMuH*3$1~^&T=*qmyB;K?chW`Xw^ukO=~RHYPN|&e-yWAa?M~N6jzupc z@U&`zHmYvGF>;c-5{r|1_XFm^=lkS)9KD&|@Zk&~iA6e!uKOr#u)ehI9H+`IYdf{} zxV-KBB+gXe`#J-ErS0TQpiBPevg*X*zFsf%7>d2x-b* zE|z46ODsPwY-8j^%)H^UbF1CRW;j5eSzu+{m)X7uE%hZle|{i&^?}s>4H4!uv@M~( z!@`adxO=a1(G$cM+A_kZK22k?z+GOzU7)&GHo6f)=pKR`hsMRL`rhFkGP^5{SI~^0 zD3oUvhd|LQaYi@G_HXn9CQqLZwVt-O0Dios65_OY39Ur|y zadjS{E5n9irVK6NXqUA>VO=KgwBxP^i$;Qe7JQd%I)z1bjfH$HA>y%VMnCY-`9u!l!io+oY5;CXHOJI zcZ=jsl)Ci0&vI2M5q;)SW3)CuT`w<<~@;V zI<8aIaoOo=cL`NLY?l|8KNLn02CjfWG`JI@7#$>S(X6{3ynFI>?TB`}c0VbrzV&za zmCD@_YIjOyJrGj)dONUP0o~t|b!KmLD*?+rcBw|W*NpgeF0N`NaZ6{kD6|{3`w<^` z^)Kj~&r0;`6?pO~1PbiD_~cnwjqT2DBi-l#XlFyx#w~SBmh2fnm;k8eFc4|kRd_Xm z*J+&lGI>{XRENJ25?}Sk-QESG{tGhd`vmo_VEEASm0VoI>J<&+2f>&%d)DmHSX2zDHqBaNE6t9XVFx_t>#T6MX=>$lSlfF}o?2MCC?R zvcvtx8SXcw+`g_Z@pZM|*HyBl#%tZjW@hPHSP`kJCgLx9Z=kD1EOSL=u4tJ9K<1uH z0|G#qD_Z7?>C8P@O^h<9c7_1TT+uRj0D!JSG1@9(MT;_rTdil>{pK0|Z%MgblR8S~ ztRW$D){u}nnd=zGc9xfAPU1toZOaeqm0H`h?3I+g64`sM0ArgbZl;~Ys_d1>-g*W;pR`v+>mwg#>?Vl9tM-jXz(?outcNMN0V#yc9z@a_U*nCPw4n$ckS2-e%MmU2tR zima%!Aly4%@W7GfT5+*4Bc_IsAW%ChJ+wt?e+{U1lKGVUO-rYgw4$t;T1R>utY%)| zP&NL8knGJDRn|;6to8j^LT{mu4(Cp5tub&T%{&@; z)ES(w-I*Pa17kf%RCnk77)awEE)B4Irv8b!m;yQ!QwxR6FQm?I>s8m=))Tit}J9C6nM5A#%l!&WZ)36ce?T z>B}YUF-K-wkXbCZv?uQ`Xl-1D>xK&3aJ!*FBHtm+vtzegm2rZjwHoIBt%!D&Q0{DA z#|_774j!8CI7?Rw2bR zI$Sy9%*YiMeg}LT`Nhm!C#~Ec*N*$YV04tm*a&M$U|dKP!!7+$+9A%OIyQIJy1PyU)WV$n}*EltG0y)8t{nUNkrX~$t?R_SWA@l*}zA&rFRy< zcLU^}%=su|RX(BC+cHHZPDSq`dY47lqvwiV&sKZ3tpwPL-j$AC8F3pc+#cchu{yKr z7`MI^utUD;rLFy-?A!&0(sP?N^$)k@TZxeJWs@trl zP|>U!_BgKS;>PNxBc&#+p~DKkoA}P=dp;k%TIR`o6F2fxSZBXMbdk8G_P)NQ+WYXU zZr###1?knJ%Juvs4we) z?l&LkYQ9yDd1Pst46a|vj@~vD7rDMP>q@6GQuOEcE1AdsndyN>y>}r=kqAAQu+S{{ zsZV_(CPzsUUHUJe8z5c!dojH(y{t}`K0@PJy7cz}Y3c|27iGU+b~Uyu386LEAoC;e ze$@JE#ZUC-)sjt6YotGKcz@P1 zgJ>V1P6vH8Hf?Ao_f0(bVC!tC@b5tHTnX(+?_7R6IGZYBOz&LjKQ!X%&kps@E&U5z z^FeE3nR9yQDq+(*cNrFkwOwMIRvpLBm4Rca{EW5c=VWG(!ja6Nd+tTTNkiC_G?*YH zN2oZp;o38^5HFFrBTuy<&2P)o2#GI4 zu10n4NwDSv@))#O9I`l9@f?mMz;_hD2mY>M(QkcEV6xbis7(c`T>?lJyMxz2&Rt*a zOowD_FmbiQ#uw6KkA2#~*RfuUN{}UMByM<*01gtLLP&?&0c=;d`8`slndP^BxHJ8& zEMmH4*lqNl02+m|{S24&#XjrXp5yafW6a%(HmXV|Qe5DnB=8|^Cdt=5mLPUaJgl=G zj`7o~cURcik8#S`)w}&v11R&u=u@*~On=+py1vxe4;4#C9aJCb<_{|19iOk-#$tg| zYoAM8kqK6{>bBu+*DVtwSGOd|R<{ghIZ*vE5rVel{F3UA(43{ z#!uF0HMt;_BS7YBgMt?YQN;Koocvc0lO(^P{t)$z`VJ>-n~1K=B5>W0nFo1u!kg>7 z$r=UxOzI~6J>!Qmu=;2)C0tfG%r=;cu#u3>jcM}p67?&TtpY?ZOgmnRqspdJrP)Ub z1@X9{H~h~c?;p}!Dwq zXPHgNa4D}2D$&8DS>eh{BhQho`9)o7vI;yQ2?rpq> zanQ){d~Ysrrd}dsX_*%yCnqbJ=Q%uX#`;gK(D=n{@pGRfzgEeaM-&)oddeeFi@KB; zNTG?dtvjwLvCIl+B=n03rN^P}f|UBQ0NZ=9Sq6Pkw;~hT3PSB{HuFAYPU}Ibd{U@3 z=F!&CBEDsO`|)WQa1!4|d`-Sr^06VI=2XvkXCC3xbc1cxOvE?w1b%|55it@BdULTi zhf+J>(Gyho!IIP@(}R}H1}&cr8ZOQOE6o8*Ph))w!##6^TR0oGbT(+XJO`{8q=DB{ zE=fX<-)ENO?0;q=IjZj5RqdwoFkLzoRCUb(eZ90bhUi)dK%Pv(_4tR~r+pZ={+N!y zu~`{-SgPooNbOt8={R&_u~e6{G2Cyk>#rIF)2*;}_cWj1=f!cb0HkJj3w z{yZslXSzGfJILB&Hd#SRovrEE8M;-Jg~75Y%L-@^E{k5L)F9}u5X24S5qkre4p!Zw9q1?Uy*{#e`+{L^3)HZMV3ye{Ts2%{R@LAt{W_}zDd@Ky^!`rhcN|pP%Bis5bx^HeE^nvyJqOjIr-zjJAPa}TFLCJmswSHg)^V!4KV{c?Mx_ zd+q=Ljko5Z{BC3?H)XLBG*6-{2TL}73jyNysl#;m7;R)&j4C${G<>GX+Eh@(c~A$= zY|fCJm^~qWKNwic(dCu{mY(R-obnjVJ=7;o{^Ahds)UnQv>KTB)710EpKSXejQ@g3 zvxI`uPq4W+BS-(5ek;?@l~-k!JRwNOGy#|ez_J8j768i=fLQNOPXaItfRO}X767#bU={%N1Yi~bqY1z)0LBu4Spe*t0L%gap>w%43xG8Vz$^gP zCIGVlSSSGIc;aCe0PKD_TxQWYbQF2sQ}P^r0Fh^iH~C@-^9OM>g~m_ctI@BhbPTp0 zRg1qiXuMh#G2qAQS&-QaJbPKaXua(kPF|nXi?C53D0AqzM^TdaSr=dRN_4EY_H(R*l)}oI3?a+`>4=4kLVdJvszjj+gOxT zIgN-H_5>{*%;xhLAT-y3lU75R?xzvO={wIX5qbPZ+M%Gep@|^@-5(l;hY8UkPg5Kvm7rzEaPhtJ<$zXn+ z#`!K@)lLfab7HkJyvLhR{`rJ*>43fE-pcU4Zz}gzyrGG)~3eKx8 z_;*w+P=8WVykp}oDX)(Aq7ad@>nmA!KEi_s$4cI|cznNd4yDLXg0;SiS5Mb+JQ8KH zXOg*n(JJGZ=e=}m2?9=+bLgZ_Y8*e|#A|u}%@?hG5s;$Jyo;GV1#aBFi~L)s?sAq= zt1s{*U%VYI)%Aj3HU3{K^gj!*zS3W)tqx;3%1qe2CB6sJtbAgwH7oJb>M1&n@4QVC z)_yUJzwa>=g+Y!o!&h&aiGdTN(zJ2jEet;p1~ys4ST>j7BiO?D=kj@`Gb83}wfHj- z(!a14^(~D4Th@~E%=9A}_a*mphUFRLCt)vN?KwhApISxV6l`&pTk>U_LU)KFP_!0XI6k z^dTPshAw0KKK#8|A2^-Pelj?#Rk|AFx8Ea)KB&u2bCbWxWuAw|_RWme>jMpzaFB|; zJ?b6*i_{CuvJBDTQAaI1s?+%-oHh!!O4nPA-p(j-w8yGt(Uiw}t)h8*Fr{Xs*q4pJ z0ITa^IXeRERb!0r8881H1)Z=tpiFKgT z_Pekz@%E2lU+V2Y#=gwkvu9_Xx7^z!>>K_OXTSFj+^C} z?;Y=xV}W;kR*r?<@m)E}-th}L`n=Q*ts1sy<$=5>z&!8o9Jl`dJ*Yn-UcQ4-~ ze1GFBkZP50Vjq5js9R!%#2gJpQ58r0dBkp_r{$UW{TuZr{)qg32NoBx!|!AA`{vw! zpOxQ7T7Inr7b(HVMl19H`KcEmlhvA)UNQL;iLfktmM4NzbD!|)z65!hk@RC^p zu2vRqpjnB(qyQYioIyl8!2JsF#GM3qPywU`(3y=khVLo>w+GD#kjm#*6oT2U578j zm}9ilHt3|&RrfPEz9zJNq~6+qds=}rw0Rqg*m$#O8@HoB-nO(@&lTOCEt7LMR$;1I zuu#-S>TG2Vo7JksoLYp=*1qlv|K^d#eN)iDx`bcf9UNwUkIPwp(|(V2ao=h*W}$BNROoHNv$ed$ccOKmYiJm@9pK8x>0c{NF<;BfkEPf^4*5+;197z_J`$x6X z@jcC&|9F}o+_t7rNBC$DN)II?t6wA>a74`HIKJ714N>>3-pNa}hDgJV5~ ztFXNAgyAmXGb7&%43cG3V{H0J*Wk4dJ3e*r%fw(fdI= z+SA8HK`*0vmUFcQ0KZHY%Ux$RlqNS=OiOxiOh047u9FP~4UYvINwWX$os*E1>*~yv zTV4J&pWmBIt|k9lPScEzSB1U;1*4V873cf>1gYtVEqvQD+~F)cewC1HQfV|X&*q$U zaE(jGCv5F3Xv)tJvmCchOJ@%dB{~`L&?9PJ!(s6*Bi{as_jMr5|4t|EYRt(9>=$Dn zUg#ZH;u!Mw>#+}dyDnE4-sl~-;IZ7>^P!Hmx#%78cP^t#V1++N<|mn79YTPnT*1`Y{D$#2VN@`67IwcZpb%EsYz`l0V0h*L z`0FCL-}qa^ViDlmV)P=Z?S5>X$@fynh}8|A=&aIYv0n z#_9fOH8gfKdqrZ`=7;g|jLMjzeb1q8EjWkq!Ng$Wi#idplWXTbyD}W*mwsfqv7Y*& zGjeQ%6QaD(0=D@Tct|B02Tdt)R?XS%vbg>_NN|#nER)o)$PSJjR){}Gb342-T1VW` zwS~RRt#fZlE7a#(p*~unvb93P8(k}8WALtey%2vK9CmmtN8?oQ;S|}gX`Wd1uFb2~ zdkWR|Xtsa=OLEE!x92vf-aiO4B4!h{`qIg}sD{?j`y8d(7qkN)(8J@mWA81-BZW+E zum0?4cQLLzYkeWhF9?ObX3SKTD|&n!o3S=F5;3arldm%%8Ii?i3thU&K+Y7Y4v@r; z*5Dg!_Amp!R&dQ6Sgc`OCM3hxSo7=VDE-V)ic|NK=YHBiQx$obAh}YqK>+6Ti0M zyO@{cAselqBhyYi7xgVNNgNt4VpDg?UGD2N$4rQN4MeSbT^sNKdrt05e>MI-BDenP zR)X!3V-oo^#8C@b@k4~{uhhoMmH1&}bz^3HbWg0?EbS$7+uqFdi*c5uI#Avn|mX9ph=~ zhvlu;4Co6=)#yMd8|9Xjp8y`6pNoHr>0W`Oz`6uZiJN)Kp>8xk!;f5UC^|G$Y z!D1p}lSoIftvBZ4kK;q;~>@W)Lieq;d)er_;4Bt4eV&G*(I!@{-Wi zhW_D=oU=Mwxh{ke>X;?gv!ihxP0jZdj#NKPyJFu0%su$Jz1jc&XjXmv#9ZRtiJ8EM zJv=d!bmdOI9QNAET=gt&{X%$i%lYIO;v4jK+>_TPRU&^QyX_1Z+jp_^`sxqiUQ@lK z-`Qr2cOEVq^qBW&vo|6E~0)VwWN1|B(JU0QD1pp`aT?n%Ph!cQW06Z@Nm<7OP3BW7> zCKG^J05lSSSpZy~0L%hla{@36fGZM!Spcwx=Lj0HzXv zSpZy}0L+r?^9^4U9ih^xMi)5a*)l58;VLWbXQFtKK|ihBh=FiP)uTv9Pi=l7{t*_P z9={B@pZxw}#)RFq8NHbye@;X5I<|*1ho}t=;=_nJibA5sZ(5Mos7(jaWYQ-`1AkHANZ?}}_*esf zS>O?YpX9(#Ht<(l;HNn7Qw{vJ7Wg;^J|084_y!(&KB1k9pp}agT+kDJ&~Fh`kK?q1 zhOMAab3vbu5ysz9VwRC-IPfzK{5^p!BPTiVxfooM5kHKFxOSccpN~O<7XQ+~mDq|n zh%fZuA9}DAc@SUZk^IObxfpk7Ba8Y-5I;x0-R>5t_!1lr;FUBo50ywRQcaG&-2{9 zyOZ19xwq3vRK}C(?hT}LY zF1YXOXe%=63`QN7aeN)eZQPCT_jjtEd!Ozk%KYE|n@{>aRi{o>o!U>GI(2HO(5%5? zYhaT=*{Zb)V6VpI54j$LP9$C`v2wrJd3ED^$$}Lp@U#~HbmoSJYVI_v%xW0I;i zmm&DWL6I5QI_%_Q2dR6Y!%IT%pDPJXd9q3_-ki#W@}@|9y3!`0JwF66L3Z-gfQ zh2Q!~n7arXkm)1KeI_|1KP4pE$j$3M2Z)mY27=0fi^)N32Cd)uipkHEo{xYmSH6pN zjQng>p3Cw%I34i0J>c^MbakOy4`)ILuP@T>dK&u|Bx7c9th>cGfQyjBLJP?+2@I`2 zBq(0#M%gxo%>Urz$>l3RZC48&RIw__!|^x}6X0)v1blzX*SdT1J6y#4J)ic6+_kfB zLy;FsTK{r6t2ePM2wPDcyh_jz( z@q7+&|E%Bd3_U9qHaIpUG8M0OJtwA*MtO;C{M*<5I)xHan z%Y{4|m+|(o__i&%bDoyojk`T}&UaJyA9LG|Uts6tPtHy%nQ5eZX>c!1XgrWPSWusy z0?Yy687aUV0G^ow%mLt8DZm^6o}B{B0pK|)z#Q~r@vQ34%w6m|B;yR+OjIdgHnPw; zNNvS46gKGmSTQhSE?ulqw{co#%@@o|gRs)75x|=e^Mb zj_lYMa&wd4gn@rymKK;sV%llMYyF!gQZWTR4CHJJ3D=D^gZ z&MxEGv}xxgiL93lqbKB26W}ox(VttbLR(lT<|J)U!A?vlY=?6S~!V*&(PdAbzPOCtj|boU}~l zB&X1Ba;6cLCf7st3Q|fgt?HLsotg^M%QN7}>QuZ+Y+yv-nb7ksRNV8v6Xw^r^jE?} zEcBsaPp~j?(TBE%v|GYNZ1bUEpR_Qs{QFkV&rgalVIsc&&@gGgI1c;JFsaEPDL-sH zDawS2HVucC;Zo~0zaeZ+N0T;;XJ^%AJyZQy-=bF&DbrfX`xssh#m>KB14a=m|D3L) zyPFyV^_xdn)RHH{bQ7|d!QcMY+}q0zFL}Qu^-Jh!@#c#SpLJ<&VIue;35JO=?vg}V zPhJ^JN*l=G`9KL`GF@4Wy6tw`fp^R1n*>bjJI3M;>P&%mzo3@jX+@vpA6QZ7~md3wH{NL!KgzveO zZ}wKYs#yZb?=xqK1)x>yl=<|P@=1knsnT4Zj~}BI`=xYmThm`ft#+ye?iI-3@zq+a zudxL&=_82RVg*xs70ln57>cNheuCm9#80$RjYl@33dsQAekAM3LL60&y}Ky>Jo^V( zA!uZS$K6K{axct{z1@{_N4_%d598yy}UXcHV1$= zqyTdOfW>wg<^b@<6yP28_+29A$)2A<+wU&?$btSzpKyA=@Hzd}w^f*Vjl99s>-4$O zLyO^F2M(tV&R7b~ZqyF->tQ=gK>H;9_Jw>Zuv0=7G>`d!7gFLHrKU5EkOsQsLEb?4)=Xac15GLDo6{ zjo{8GneG+H;PJKUoMl%_z=D@kbEjXEV57_1zu|D4+Ld&$Y)(B;uHznwU( z>&n5w!u!$^^~%xTyvP@%%5Jdg3c``yo>x!+opcSyt3-5-Gq2S++T>j_>OofCwi~Qw zGsZT@GVSYb%{_mq+rI_5%NK0B&AD}EE;+>c>W6z?NG_GaaD0^VXd)A&W5h2K!7H36 zxe|ySk5BIW8%8iwKb!RWxW7Lf={`vA0;Sb?H)kiBAwNzjT`#F}gX^<2ThaPT@&*tJ zb{rHqcp-T`pyXa6#E+-K9W=h3PC?i2E0m^w#I^3^jUf3L@dv@}r&894;8iHMz0DGR zi%`lg@#Mp4dd(-g97ZOV#&09h)*}iiwcHJE2T^M!IR#hq+(L3P-xdc$r|P>k&FVuW zBXL(ZGx&+OgTZE;UzGpnXO~92M-h>Q4aaLmWl2id9{{E;x9xA%@a06dW`hC7W$gH5 z9hmVGR0r}M-Sx2#jdJ_JztF~>`X4W@ELvYEjLK$oFneCQgw*Zy)Lq!!30k!{JDd&z zSnu=HsM|`(!)ed@?fuTtxSjhHvmZ*)5_E$rt;Mxy7U7;-m>h^BqRG3}{LiHMgCrJt zU!_Dr!ZMA)aMI4cbD=%?MWQ#1KLyqd!V5Pyd<$Ra7-H`g$l&o4DRiYU^VSsSfN*U7 z5Xj*1_25*C%pZ7Rau^fV~-+<6(2z|+V5a_;@_#YTD zVR8fXPOFZ)kS7VEn)Q%kGAW4a-9xZK&Q`ZMt(vV>4i>g+U;YF}%}`;MiOqE_pS$k) zkbA%7-f!gTC8lHpWW*g(L4(23!o+8(s>+q>X-f45rOL>E56TbRJ7Q{ohmFy9dw)53 zCw^{V&z_ZL?DPy6j2c^Sqir8T`-Ef1CY#7|=B~6Oep?-JGoZZ!89d$%J@FoXIKQ4C zsIjR!`66o4^?nbVD8XnQOXzqw`~9>r+=_ojIBIoHKb!qb8bpW7dPcIIC0S2$oD!AZ zRFGQ*-Io~M!$$WUs(KW7J*hDF4DcT+{N#8NL6)jP-1#+iQ)RNkuzd3oS|V@nDT3oi1^-{701XC$NtE#`;E;+PTJt&uwk5FrNVX7o^QNJZ-t-$3Y zertIyPQ6mX@u7`Hv!QaS#>M}DQb7){M3c|p!NPxJG(^c(!9-{s8ScN3G8Ow}PzsIY zD}2JOw==q!kacYD;>76eut*}-0MztB$p;mukbIVp9&icGm3+=Yu?6X&awT67bZSw^ zlrJaC6Q~^MB`VpOTg^EE-mH69yOgEtDQ3U|C z5SIXS%0m5)L;bE$i|{KuJgNYo7UT1TdcIKq-JyO@s8S}VcvJyEEyY!#_6ha-LLFZn zhVko}M#eY$*+er1{Wr{gp8ohS^+)3nQboamurS5OBub7^ibwfCaf#?M4i}RX=?ksC z(CdN;iDL&#A^9lXBWVgUa|h$qM?IZ8*-2Z_WF5ba_zWh=HU}B<#jntexm70@=KYwG z5L1A5Za2I=ipIt$MpgbFv-ywxa*8sjWh4IJ;S-t-lU z-dYhw7soB$IHWd7Her5tJIB^&u3!g=f&d4jl7nnvC3(zRc3v$ zmm8)S=VsS$5m97uMAo7-=IVj`KsHA_b7L~EDbG))3rQ{Ci&_{cIAYIG5%Cc9K`P^! zRz?=oD$}4|BCg!>xKr=O(i9bb7Gc|-iJQ$s`C$FG-OWSqUdT%N)3d1MH}GeNG59tA zpUC%e&7WtJMkPc>fuQ9a+&nlyN39l})>&(?I4j1+*&CG_VEgNw@q}IhT^E zE^NPWOy_i1hQ5-`MMcLT3aQdbaM>#1Ep$;0?c|!J>P>pT)uBjM@pA|NYMY z%GCcE=YLh||FrpgETVB6oG$ht$$6B`()yf>TSSA){1$f>y;oOj1;_G>3ZKg?5e)N- ziW$Uj=hGgYMXGs7jL!>WwtAS5FDRrCf0++yu@=iu9#%5yS$!I&IrnJl3ae-khk9G7 z&~SpY`nb+%&LLd?W>=&c1V(IoEN}{H%}j`?s=2ZZ_o~4~kc7i@-U54@`Z1R0c9-Xg zg*_{o8`=|vJ*)I(S1h^A>~(3LZUP=IWcE$xt8S&yH!F_2XWO?un1Q$!aN2e%Z$9^3 z+W%_h9rZSE>>4jnY9~wv*ZB?CsO>H|(+u_(*qRhZGCQ#Sg(W(Nd>Z}7@t{n1e&lbR zeD2&7U^)qf+hmI~CynBgV1F@_Mvy#MB&?pSKR(^_WwMOonQm@Df=s9~%N;;pYRxdM zRg-shBW5;>nSEl^n?$XvZhbDz8n#XhZ+YCv#BpK$c4G&7L)q#aO`?Vmctbh`Tfo+r z5_@v(6Xw(xPX}g*-d}12`%5Fe6!({w%yv`RU&@p|Y>h!iV`9k>$Y?buf0AaE$sy>a zovEOKD3YaS*WRb`y~g_5t<)eEwc=a!Ee7uXf$gp*U-?9B%rs}K#ghwZ37XyQv}x&! z@VoRDn9c{|mUrPks`&|_`-|zRdaMQKD{+FD${io8d=a}d?ARt(C+{Mg4hJWN8$-Vf zaPqW#llRa~48;S&QF0&nu>Qqj*?4(^Oz3n!3l@3}J!w~Q=56V|={rQ}?1ap{0vSAh z3QS4-RDQHI@N&nsx%dLNr0E{WD0OqK)y-Ro-ztZlK9vatq0R?2ai;v$E#UnPcz)mD zHqo|kfW^~RA^C_VWQzJV(n&t0d0G6N1QiY;@_Pw%Tvr#uVtgrW;C2-u;?l1YA%2)Z z+F`J&HnKYo(v82abbsj5Eymx#=V;?y7+URd(8kRnv8Lb+O8qth2)n3v3y?Uhz& z+uVft<{#ju8j=vqIwu5GU9`WL9K1#!ZNq`ss|S%aa&reHVfscU#MoZ!Lp#f zgNq-fpgsltNz`lEt=PS8N1ezB9dkFC6FY~@5mC%?Gdvd=(%#Q8aT5ZHIkuITO2!PI}iF@<%T zp^R6%^P_Zf+tVTD&t0dnc_z#hs$&|Cll|B0fY;=N@KTi-Wbl#6m?U@J1xCA3aI1*Y z>G7$$u~jrqt>8E{<%{~qSz^>KBVL!L9l_L(M3cz?9W|P7!`z#o=kcQFY|#@LJ&}K2`hcnPxjiRbzK8DBhPop~n!P%A8h>;+d7A3a9p@#F zfQ;!Y`O)#6zR6y#J*ns0Q0&She)@@&$75XusurzB^4)g^qay>CD)XZRe;x47qj7c9 zgK3f{evE=)p_k%$(m~Mn>1VEIHHUU~mbU_9s7&hEX$_~}P8rbu;Yuh)38v(=cRYeA zfz0`+@hihUte}C()5AOEjQ^WP7=NRSuyBFJb5gw_7ZaEgFqqg&+HgT`D`lpIIBR(y zX|S&C*0<7JWsipi9GLD#{vIT^YQbn$C(oi{Q)%L#)GLUuzC6fxM0FR&zk&{Fd0tHg ztV`FPlL+VFDGf)WhB=yRz-S-M+tKfUuEwrueS(|xYrIDMaGh=!(1(32h(%S7OFVA? z8`Ij;k$0M|@>Qzc!KZ!FJ>c9x-V1Y6s6Ip$zKCC=YGLcE2`R+a5}}VVVG# zui&mO87osNCY-BFdJP*rhKs9tQBWhPSgf5q!@&_uW#{<%&Yv_GQ2>d?Zwxq<{ypB#^&obbrz+D*Cx~xQ3hHdC z5IURcWBi`L>c>AQqY&Tk6zZXJ_PXF}=o-EY${7dh5p+StrMv0lDvK_tn85Tg7+sLF z?Yr^Xakx3umjXM_K;%;k=a?jp)K>hJ_-mF&#z%R#iD#iEcP8{mt_D?ZT*{uDk&v5I zTuv}LPok6+I!zI>s_`Vgq{9y^%H_1>!)Tq|<7^F(Denf{KBnGZ(xG)2>(IJXn0y3D zbK;WhA@sl~oDe5vPbcX9d13LBL6GTyzvWBHdr7(d>I0lq?Fm^l>;`04{W{fYIU%>~ zA$Apsv(Oc}YoBd)i1ki^CNiGY^_qdx(2y!7aEKrymD1I|lyY`7o~GUhuw4&kxckHP zZK2qlJuSEkMdv{$Ob6o1<`b4=7Ir@ALC~u~%>imgmw{?OmAE6 zh#eDkhi%4>DI#?_w;ewLly;2&%sxMu5{_#}!Fi>g-@~_~Vg4Vs;)w2o6KQ948aS6ydF9FHvvkAyQF9Abw3CKAw0m=Qd z3CKS$0Yh;K$T=?o3HOtmdUYUwJ(Z{v4s> zKKL`;U4$_JC0>8X22acn9-R~1)rD~ELy5OrvayeyAA9MX;N#{8FZ025_q91Gv{x%x z0a;r#23nikH`z;5RhtXBcuM?{%2O%(61kom@eJmbnhhR*+%*> ztMC8KbT!hIuD<`@)7=iePquo{JuNs`ufq8| zO)D=?8qO`>2e zQ{F+c+cDBNS>DutYVYYZK#Xni^ryZ_@yCA%M=A$T ztEg61Gw9@S#t$^MC1zlC6ma@q`5DJzjD49g((k_sE)7d_5O9AAFb9Bdr2umPIFJI& zAs&=kG8-|>Bd0-O*Hp|ITs7?qJ+S@Zye9I9F8~oGtFIx*h%a>R`{dr~-2Wo?LvU-p z`+l0EIRN}11(*ZC4^x0S0Q^S^Fb9Air2umP_|Ftz4r{9ou+7|M)BflZkufs;d62ld zqXXn*D>Geux#00-{I;$oU=0p4%@JR!fX4I}6k&E#I(IajR*o)O2Ju5d;kKoz#Y}$( z#0KVnU0RD=Qpxk^XpMsbhtlybu(zBKOFT=@b+VMujzG4)oazo|`%`FelhSfZVTX<`oQ&&^d+RR&R+M*NAHoHd` zX;du0y2N}#aM<0AiY@`Q?bfS93Q5y6;)kmVKF2~D&bHHpn7O2WXYWQM;BhK=zGk~f z-NLL-qdA2x3e&ARPZ8VUE=9!*MThhu1fN~RQm+sB-g!tP`K}mWMHzfcFW+dryKXTQXcu{W-< zb&O>x@AnP(T~OVC?KO9-A=T#Il8xiT)z(qHvG3C5*xaY<+JKW57rlZ;rN(A&7P1NG zIC=vXbtJR&C+DIW4NHE#{-eY$+`B~iPr8%4|CxfQoKfyk6znD|=l8&FKPZSFMjhz< zOI6mazy>pnm(| z$>~PylGDw^lcUy#oV>`%OsRfBYaZ{)B`qkkgXD|3E+weDk_^DeIeuO%i9haWot!GL z9P4MR*~Mv0pTFj1@-HZVKQG&Q^E6TkX1n?Ll~@|HY*ONBg>ubbpJMz}ed4F^>(?#~ zYh*^pD@U`oGk$f=4o5h+y)Q@8Tr{Q1Rvs>Km<=D0N z7&UgI{JFzRDVlmr{4{#8IrgTGr>Bl*qz*`RIL}HQ&rTiBNgb$R?=OP<^Vul zJAgR=R8oLB08~?eIRNyf0CNE7PXXqj-54im%Su167TlC4)Xe5=doQq{ZtBI;f(G%O z(9e-tJ$@NA&#uZT&|2UYY6_0yO<(Bb#qU*Se#R%xa2m%P00srXkm|G?LHr?+LM>}vyO{5@)n0}K4^*GV4ki2S zhJ78lidCC+oL8Y7#_SUBQ?(Bk#;#i5kMT0z#Po5@#!WF{sjh7PiilsF5@HSj^%P(Z z0F4x24ge!5z#IUUqyTdO7)=4@0I)O#m;=DF6krYj%Ts_k0IWy><^V930?YxRCV-x5 zU4(<0Ge0L?^0r5VSgIa=jm9LSDSkYbb$Hyzq;8!K(Qchpnnu2kmba+pxF>~kE6#Df z9JCFG>BgwWR;F~A1Hh^jU=9GQQ-C=D9F+ph0borEFb9CODZm^6)};V*0601Ym;*qZ z0?dJ+N%t2-;4x`{IRK2O0CNCnrT}vQXr%yi+`?00061uNiPjTjoLJO#KD!}IKJHNL z#=u$rxShd}u~Ne9v1sq!QxjE#g2PJGwj$}AmvUAc@-g*24;F> z@Da<2h4|G#*43-c3&P~Xy=FbNko9eHVGib0C#5{=qdKrdae-)Gpm%uXll(AudGi(* zbZ1U{8P0c*xnJ)Zl;JrVi{WVe2MA%A;|ZOm-pvEM@oPYC=TV&Js-1Zd%D&bTki1nq z2MQClXmny>pbPN7R|x}|HV$I5c-b5++gw@=i&hztnLcSn#l8b|f3x~P_Gb0)I8WAl zo13G#b=%#%C;nzTdFfv&o6j-;n5-^;K?BVfoOeoGT$LK zOs^ONg;RSjW_9vuy`W)>>*m6I?u(S?c~<`@-VYSwgK7hwIwN`u6AAhzA+W~gq>wDa z(Y_XSyc!N(Oe3&eocsf6H}jK6?atj$jnK23d~lq*!OJs88R*<}JBKi=gw`lo{BID5 zUelf()J(g|O@Vwd=Bz>H$CO*62x3I~QL7%dq+~axx=onZ(bPGcfI>1VItE=pSm><8 zo19_c3gO0!WBnK`@$1!7(y=9W=a0hBI#7^aQtt26cP7V=@w{4OipErc@|^19eNk?h zqFjI`)k=nJyBH=dzU!QKWMW6rtjCT_j2Cymg#w|lnOq_2N|9}cn=*^`XaHepcsO27 zL$4bTCoiBnY$bGx6ES-nbU-bK#&&d5Wb<+m++nViDBIDAlfz^c4tpkc^3tMS^7#%+ z4)*CBrVBO&wG3vz4|PN?omgMojer9Ka#CEp$&;xqM6*f~e<8>r~)(fLeISt2s^5eWWujkPC427ucN0ZkIiXYR{RC=l+kC zezv0q`B(am+x!>9_z`SN#yhw0i=C(BBhXz;_Tj5!PhvD?+*!=#+@jOd^RE2i^72WU zg^#rVqE3nwoTM9FxHXvnjbh<^P0}{-ro3cy*Jm=Eeb@ zcTr9rf^cNWdEJP!0gbZlVn@v?sF7M38|4@!$VzKd)VrHOpaG2a|a;OHVQ;W$?DT!v06MMeZpG}e%{Rak>cb0MQ$u{GiI^}6qs9Ov%2 zTgczftUGSo-extVN3 zU-tdzM)4L1e_PJrr{0&hX}5m>BR2y@bh^m5Ol}34Jv@d)hoX{ubFLOC07J2s)9$;e z(joNaR?3TPt$GZkezuwer?GC>}ETaPmP<@e^`>{)C*j+nG*FV-uK1J@v?# zrfXs97{WYwL`?3n&(MOy@f%NtUJW`@Ttpd%eMq2=D<<^6J>^(?H>>9tn#x}xL zLQ}t%0r`5ZvcI-4xl^o0nwt;hVG0XfWM{?WwaT8aQ!%anT4lE!$rBKv0p$tGV*;Yu znp_?z?zTm_3@vCPKzxQOY0^{E?;tjY@xxl5$X(-F{hb1`=-2uMJW9ZD@`Nd0+=w38 z56pP+bgXK({#U$Ew&jpIr1bPo2fea0)Kt`5cYTM8z4E+-)V-zb8m%-;vT8 zD0v2QJA)hU>}POuJ3WJYW`@CCviW%DTasPDC$HJ-=_?JCE;8oORi8N4VdGO9P}K&x=!%|#?&jv{%l#`eb@Nw_0}cXl>E>$(_DOHLA_YLYB2|`hWoz3pL>Uu9%6qwJ^E-8EMnE zj`0zhDlf`k#B5z0C|_i}!Vv6=b>D$ft&C8*&W(C*k!#u=J@I{i{PUmdrbok&2}VYP zrQ!#*PdSq|;*__RZ&Sx@GO`7pYdl>>Hor%k5BAP0!pWPv2#1dM!uX|*i*5I1muz@D z<#T{O`y#Dve&y;hS7LeM8sn}ykl*$a>)J(Dprt_iOIzOveFHYLFMEzB?yt`5KmQAu zb7%H1KKDpz787?`Y!myMVj}epG5oK5-jQS2spq1g95VFS?%IwFUO)A(q(tjVrm9g) zgxgwP=FKu3`NXtIr0Ee4GHds5LEz1Et)^3g1wP@FlQ${&6edQD`fya3j4@%>qWbCmIcDkDkX$2`)uxws* zJJ0e!-fcZgnmcUo*()o2%umDC@oY~ZH^Y5u1h>Z=v$kS=-G^7_aE@khN;VCCNWpK_ zdXZ}Q2hn&GZ>Kj_xJ%})gMJ(w6jukLE;oylNi%BQI1m|oqOi{huszx%KDousSko?y zY^rR;sK;0O56l#k_du(?1QDM`VOxt*y!g%3cK?BgM|*ZE{-WqkeW75R+ULNTkw@hH zT_%A30}~RTIBmz14P!N<;4#a(^`?JHz2AxO-x}w%rETU*#!SMJ1teWJh z1>1bW=Pe6TP$?w&q9&gO1;=qk#TMK3!imqLidpNUcvSgKr)jdauaFdPL-X6Z+E2gd z&Y6Bs^waM^-gc|>6Kz)~^MB{-!inyjY;XQd>=Nc;+P;rc7p8UJ7?(*In?vCFb4(C5 z@eu>X`o+dmRO%OdktA2I$!sN=aTE0Y5Qyp!n`M(FYj>aAW2AqVUyQl<<*3MV6u*VG zt` zIL%p7oE1edU1zr;6!VjKIdk!3ltji`A)_%-ER0nrblE&~5936GY{6~KrC&txT|$bN zs98=+QLtD#A7#W)+A9k2=~M{)KW__7nEVU*#>dhPb)lUyFpgM+R9!op8xJj3`63s% zemDv!SD1VrOnQw8Nf4Wg$K&F!ze{1Fz0>D(hhu$rn6nx`KJ5%q{;+(HD@|f-6)3-i zuR5>@m~Mwwu!IsMQHqIsu;rtuHmyb^*#zce-AxT@(3zZt4i_t=|o{GL1y)h ztWUL;2AGS>%+?Z7Dxyi;_1K-4(W+v+%VOj_x zgxU`CFi-5%Vt z$?cI4Kv&upIlryCwwMk@+)|Hh8kRYnQTGPz08Mcv(|4^p)_)@JisrWHC$c$->s`^< z=z9GwomdW=f@)I*yGSEYj{%-XYhC67Atubu0%e&YF7G0a91d|=z#hYis;u_RNk*$^3!!y}#HHaD|lkGNxgQEvl=~Dl) zX!33QbOf>zqUTG^;NltLCONwit3!AP)EgYdtJ1!)0*9@s3zlhw+?TuItOf9&IU3}? z+#kQPpeeWd+*#>Aps zVVL{_F5W!DCY|e{T>r%KCcwh>A!rDqVkuMOtta}#wQxjSWmJCBi=vVIALh zC|&Lxx@?+fmRd`(S0~132m=?6EGKtI5VBZpB5v9!^vzMiFkUG^Vpv(%%-hR>->O2# zP?^14ax~RU6NUM~%G7_;WA}ZA%9+zxUJ!o?jm5T4l6aIRUQB9mX6&q8w4niZ$gc!g z8$flU-@>IjF%V4_ZqD6ME4!5pYhn&RW?rqR)xWiuCUR}sdYZ2Z#6lzM`)doAu77N8 z;n=|X)y>m8+q5sJQj)4GNiD*qnyyvpHK$}MOf_BKRP9z>lYUiDzq%4aj?k|PTX(8I z@f;r&7*2iz%-Hv*FjjvGdu#CZx##^l_X5|4il(!qdzQ#C-Il!)aNe3_1`26sPY*Jz zv*$=KUDM0u^bVzy)4$y2LG4t!^PqMr^X9=YS)xYZj0|}^9bO}0?!4HW{nRDgyr|jl zkU38pF{_cPFte!xDPDF`XkFnO2G!@K>mO1p(?#kOJ)T-!Y*he;CD^|Y@k<=)MxdIfFAEJvv;PIm{f z!}u+J<;^k|4}9VN)2)Ab;kMj@m|j%q{1crY?HeZ-(Y<27K0#s*wXpS zF)!{06LZ_UAa00-y~V-K0HSv{rAr9!=5%vubaRnj>%j)rgWJ`9Q@RHzzV+DK4pa4Z z;_P|SV-Cxc4rO@K-4X;;R3S%Z=^&9QSaN4ubT~XU0^O-!uQ|nTtRFBI12IW%%gOxw zFB&p3D{o~phpLsTbrlUbOI5cn#qmYe`2{#^XE|K6bMCo&OPzcxl#g~v{v??>gUL8Q zoabPzPGz>A8rqE1e3EN@+n}}kdV)u;P$tYaI{tu(5l=Q$M4~u6oVQJvnY&rSie-!3 zqM%k{w(yfmS%)~Xwg7UJvP4RH={acX<4G9#MTaebcPOf+)Q@ zgk8B;YTh?Jn_%ky;R>8I!0r~_2PmAgiC|~^H$=JItH5P(UHJEOP}wm-@B>o2k?#Ao zZ}VF=#2;t5XKZJVvmqi*`%+HCLbhZT6J8DX11m& zPAJ6>DMf({UMpKm3@sg8>YC!?YKj*rn`MK`tQF0A100)pUWdGVaC!V;l1VRXQqpiPl2LEuW2&TA+fcZ1Z5W6PcgW}*uwl;Esbrt zgV?n(s~I~|QO_H~%9Q2I$ylwg*6+k+i)(!*HNu!`zsbwCJX&%4Y%ZAVM{nxQC-T#`UT{e_I5)Y#+wMDjp;fh2RMIL}NuGeE+utmV0eAR1 zJdcLOwZ&VXr|@BaxL8}99xe{o7Te+CP`ww}-wW(_fsI-td4%X(-8`zc+UUIV??uZ< ztv)ysf0`QR^BF$L<)DG0Hf?_m%OI;A(MQ#eg6N|>(POU7FJ(fa&Bq8Cb0MYHS*7H& zYOpoUHMKPfi*aRW37ZJ2yjB@p5`SJAbx?=NOtulVvO*AR>aWw7nJ-!^exraA!3ywm4j;J}bM4hn`55EilM%+A)J_mjQ zk#yF_J9l%^S;*R{gtFy7ew2Q z;fLz`MT7|-!m;Ip{5S!p2@l}!-a=X>TgunA`%$Tr{=4({m$!a_iYj{%aXD~i&mH?O z5itO*;$>UJQTLNN7;0_Imu_*-Y);#ae2*zCWkh3T_x$;9{$fV37|WT9Y#kqlNgxN! z0e&sdH)opmN#zLHS~OLxY(u#m`vlBfBN&EoqlCtc8Zvh(bw{7ljCM#sSr(l4&Jnax|ylL zXxK?r>lpqv^S6>esb`(ZU-LZA*&~|`O`fuJ{eMX`-)4BPYffOl+Z;ePn1lDH)|+Dl zOW)=|lZRA6E;uzJmkc6*UFNYfi=U8@#w0pL4~T2N%R0asnznUZl*ngm{wq~+ zpH531d>|jMrDq}|wK%qrRhn0N#(T48yty=LX9p$>UQaXqgJp1%GQfATGHBwdG}okI zmU$*K#Yi(VX?68wbGVjFx0mTbd$bZ>&golD(gLrc{9L6ITP&jU+$|4O|ic^qE<(}5#{mck18h#YUjW8pCW_38_ay%q#C}3Ql@s+ z4|sQy3UnpX@bTEBSkHBeu8pWSwPp9aLNCN^^0a-8Xb9cLrY}nndkt2{d^uYkY-hTH z&G~zcza-aWL+r(x+x%WbQYe$dniPsLf%>AY$LeOOKq|ZMIFWY!C4cF@L;KkasIu46 zH{Ht9I%UpmRdG-bUpZ(IOK@OKH9t9 za&x64=*34Q=)gwS;4ts+S!AW zEEU1O6Zng$VD%62U}`T_*dqQO2MoI_xdGhzcRLnU@~yEv9NO(0_(^Nn2_e}YXy6WUIn&eVnKj=wvwl(Vaw$!ov*B|7Sl zbEmPaXdQBS*h$TDYXQ_M+I|`sGMS(Fy2ayAU-jT^Y}zO z2T;*Mn;d2H*Fav;RUa7j_%c;qSBd;U4u$ezOZk55*S3#8KR0l>lgILwWNyo|Oy@R- zZaKFkoNoC`NM%|+2OFOZ+w)cO#cX!<@}(cdHb84SY>hNB#^Q;yf(AoRx)1TCDnOyd zg3PTXO)Bn?bO+#YQu?Ou&J%FOjp9Fn6}p!n=fG43y-mZI&%K`d<$_6=d>Q0%ROhJG zA`9YYNnvfJeF2Ja1}T{KFOU;ao->G3`2})J-V}Xtjk)IV=Om`-TWMF|S}d^^25`6N zK!Qs|1=K`Tqz6O0SK93_qq0l4%RyDH&fkUnUCkfb^tspacMpGG<8NGRzv=AydO6z? zvHfAyX%w{=gR`5#zJRh=Mi&Z4z{g~O7kOabj_o|=wl46)EG_XFF7bcFjbdc9M_Qxp zGSYM%(KZW_ZRSco?!(ets$e+-zo0mi2bt8XTyiN+o^-okZ;+~h?ADt{Qfu7fx;hPu+*Z^y z5G|}*33;kI{+g|fXR#-?RgH5ydnDde=9tp%(3CbDV`8DeRW(yc!8lm=uG#43HO@Dh zPJffnQ^v|DBX?5^J&?HHKTKSdcHQ3gdPp0jk1>4W)6|W8nkQ%IS+aS9^DXi8Os;>W zuOnoZhuxFA%P*$W>?c0=+N+=P#CPXS@BfXoakisj9-NL=DfGe0_?nu0ewtgR){Cz8 zbXC#wGHjw6Irvwd4OPH7x+5Te=w! zzmY;p)Y?r#$Z~su&3+fgDAVnad<sU$Fw!-D@Y=zF?dLncF0+>0qT1R2SUcTlUc#>2+~K$VY<1>EGyAU@^v!Vd~-heCp=rfPNh31 zHdp~j1iba*0NMP11H_@eEn-FyCw^1DVgTp*uegj=87j&9Z(T2%!alfG;-qpH#1B%J=Du4oZ3dE{+igJ1{v^qcUU3IH@SfV=DZxmfs%xoE2JddXe z)+z_A-O2BHH_0GjpZl&}6WgNF+ISrERavS`wx2=S(Ov4d{S3UT+t0YC_fXNCSd&g% z+taZ`k-BS%pZ8I0`C91lrpj6KroE?e}*NepL~bhmD^ms$`P zAc9$rV^}xuMDe*qo6Dba!PAGv;!EK%O2*Urd27!6za=vfjc)cUO}ZXU-kTN-PIjLB zEwnoXb0&Sq)0T2iqI}9L)fMHOEp-lP)jW-jYP$aX<@}F%b$9(aG=JSfnVWyAXgU82 zJt1}Q3%>ft-r85Wja5_sSJ$EEbVID$U|7I5F>I$byZt43bGl+aKBd?xlOBHAjKVxG zI+9~D0Wbc5(*48(N%u%o0S%+Q9Kzk)Tj_U^Y1T_$B~oWMeHDscwDruT!SjbUpBK~4 zc`?)?%I4VAPwV|W4Ia6ZozfQV67}W@^VCp2pPa|&UE40N3z)36^!hs@%?Z6Xj-&7XnPcqedF4Ik(fZ|(al^1Ms) zIPVv56LpuRB>OJaB7Ab`wmZy-OJVcRT|3tMx4e@W#X|Xx;w_JZg=f(?xWH~pJqI{~ zk^?~g@3-ekv?u2aroA?=IhnY4q-R&JMZGNu0gF~A<;Jf5GE%T_L)xjQ(YmOF(~SN; z(S^C4ug$U36>nIud#3O!-1EuIu(B<5=nU&NP0Xs`hwxeRQgSYunXzz1t~nv6R+Vi8;HNQ+xgc^gHFGqtex8 z`5j%(&3JNghv_Ecuk`WO7cv3%rp0JHP$S9p&VEIN)#= z#NWqZgBkYCdxwotvq8I3Fecfk zt$PX3y*!&6c}Th#Ka_@n4Ze=KuQ*)m)$8Vb@@!)8KvkiMy0hHyt^Yw)N^`gDYa8u@ zUQHiZi(*Zr8Psh+Q>7YanJmK$VUSVTc7Gb{75G%#G+w4Uv};52rNI5gTcIOIlVYlA}%zerbuahKsn zIEtW&q`_7gu8FmAo3+JaI3lxE#rP{YzN96m$8vj!1Ka1~F;bO;@hEHADZ-=V(=k`- zZcc(eV6n!SWQt$o zi@rw92?>{Mmp+CQu_B%|vG(YC&OgkxbmG{7sD802e|7F*;PjQEJC9`%4U_%G@7-m; z|G;m24f9*cjw8o?>}B0_md{UzmHN)(4xi3-q*He33`E@UvCLz1IV%UO#lAO18-LCkTF$YhGd?UzexRdy7|iWzsdKK z{r`)6xz&F*b3&N>25BS4=e!RSs=SEqe976AL?)y&$fvW`ZzK*$cw-WF}}J8-%IJOi&>kgl1DF2s4|#1hJ!< z3Cd-I7R-qiWP=vY30jm5!mM*9L2Nqr@{%2|UWG2s#=<~iCJ5_@y;xXA%mgjT24NC0 z6NEj)UMy@OW`Zz;*b7=YCumhR2>XbcSQtm_#acZl=%{QEh6gjTusYa_g)Uhp2y=tI zAWRKrg0L^x3&OTwCJ4iVh4IUSsWY|YVJ2K(RzO7T(fCV)7#n+>v%OCP!@USNErcL6 z26kElpojIZ87#%0hvl+Z=&}g8!(L=8HCnp1$(}-ugRm>@l`+!ufIGTA4Rm*!m>jvmR-b>W!qQeM9$~@*&=i< z$gL+|?pcuU?UWFy6>r|Myim#ZX03=u#R(H&@v8}Ea}|uhw``u-sm4nFOC&=7g4_`4 z+->RH#(5la3r=tg$y=0?m2WBG@3HXLSw7x&XSrZcc~pzoNTm9Hs`NI`Tx^N|w>&yO z5MTOU;>K_CQDq@O?|}xG|Kq^D68}AUQaOO)yTECeik*Mti(Rkyr3CTd+{^Jg*;n9n zAz@!;9zs6eV#tcgKdLKUL~3c{P_ui5!Q;H+hMLBIGW5L9%5o>E>N$C17YB=t_+?i3 zeH_OwmElJofS3M?u$&Dw2=VoyP%3^SRSuS+xI%4fn#^ZEN;P(Eq zOIi{LpLiW{&YS||3qyHIkbS7}6N4pRg3>sbL!ez{IG*o4DubQqbgLcJ9F(S-9Q4f4 z^;NxAh+;8jvj*7ZMj}=Eop=ZRd)kGxloJ|UJkt3&C5eB*&x)RNwDZdpI?{7CI=@Px z&KU7tC3Ik5owJwhd_Hv@#)@{QuhW-1^P=2|e#_5Z4LhK36!dq3 z{$5ax7wik0(N>JJK2+Xc&s-wh_zxhoMuRB&E35;tqJG90{IuxboY9tyu`mW z-Jb?AQUlKUrZ0nny|Lv!wlX{Gf-w;ep`a*~6EX?_Z?{ zJ47ixQvLm_`0V{sd#WKre(cu{KH{!be300P8Ze@({VUh7L;8C_qH|Jp-6-Vk-8pl z5zpy*SIWLFfn%+>m#eEA}CD$HG^R8P(fK{_Y8u$!&sjl!Z$Mr<_=?hc!JaF zA(`!lJ7+9FH}uQBP;pZ#5MjQ;bAOLFWYZt5-@id>(fK{ zw+w>0!&sjlg6XgLl9@Y<_30seKa+yF!&sjl!hIP8bBD1$J%q1k5X>FM`t%TflR+?d z80*tRxIcqn?l9J;hw%Fhg1N(3pB}>RG6?1lV|}_k=zZOAJM|1=0lJ~@?}eH()^9KI zd%D44V(u{3ryKnP-SEVmv3`5eKiCZpy@)>+hzDj}H}Jwr*GQ@4(xIfo<2~IZoR)#^ zr1tWEZ!grGv3`5`f2A87Cgu)feR>FA%^;XNjP>c3k1d2B9f>(({f=Mhhwi(3p>m?7 zJa+!gUx4eFempZ=YIgon{k>iO6M!?{7xa!}?!)jT(no$j+?~@$j_Mn#lV_iUw*j+v zV_x3RDAajFjyEsclm!J-*OOv>)5DzuP03*Di9iZ#8@sqx$M2%x)>q{lmn{klOEyIL z`o?c#uM%e|C`>CV15)^P;)&*ZToBjCB4R!`OmVXLC66%VG`CYY0aRpCbQ{KxF zyT}moq97`7{+#Ehw`$(8wbxYwT7Qs=Kmd<5CSGNyn?joSq%T zMT#Gn^i$>sh4L_(yq6ZRpSU8}J?SQ*Q^h;o$4?M-(3!4G56GRLUZ~GNG`)zg(HiDn z4XqzB9#r_8GA1>?txbaqqJ6Jp+j_9B-vmX3iXNp?3dU20`_2GvT5X+G1fqYbOrpVD zGUyV>Ih2ESA$Ai`)|P-veog{LL6i)E;!_KgVLWV)rhJ%)lUI2mEmBrUey|vjEXJvu zSmvOtg&+HNPK&cTap`{ zNZ)S=atMss1FrMDQ10@d!1 zPf2Sxu$t{_E-ty6jW{b7uoTeApMZiyz9#279di~9jvQeq$JeC`g z=*o^#I~D(!$9J-ic`Vjr9*)j(ZcRH)H_V*`opaM&;?s>#LU*N~m+-geC!D6ccD+ki z@|6=v_fyc@c`PO;D?ye0?VHq+D4H|dWaizf&3j>jw0CKCM(eFh6BbOMzaby!y*U-X=IsgXcJn@Koc) z3BVRg0LK5@?nvcbh0Q;~&Qo(SSH^0EJ2>8p;zeYX_Bfx@=I@wXa01#s18srSSJ#Hc z+xm*EB8|%?N*sTwRO9|@6je<96ok$9S=qweam4?u;>QcggL_aIl2+Xml9l{Mn}5b( z{Hy53@hZIZ8L##uf{N)(iBS~_XM*l<&nSIdIwrg2m|m^AVJCBxzFpZs7o8Bp*w33n zU=Yu~Toki-Q;O!MKX(gX3%emA0?{{F+rvv1tF(8_Pib8b!>3di-itjR5_2WQ9C&mF zkwz8L{M_OminZ(^2*+d)D8I>t1Jf&KDqs&ew~*sK>*7(dkzu&LOJn}+3s_ZiABjK)lsEB{u~Zt zaq^y|3(;s%^|seep7SP#%QHa;X4MLA8IzPN^Ohj>vqypLql5P9 z4B9KS0uE&WdTv*Ogociztc!3QrLXTD5(>T!F39AV<^Zri1(*ZjoycW*via_@d_TvW zF!N@x0yvQgQZrG0e4BFTAmmse@dT3qXCxwkhw9_y^owfIp~SNr=B~ZG!dbLfJjJQi zx3A=)H;^tk{TWM*`~y2j`MmOfi}Fv9##EBy$dFNR_AJ%!*8RX%W1?G4#>cC~y@E&{ zOP}!X(Q}NHzR1ga^dV2hp9!(9y!qT-@V-EPod;t!rHWwjYzj8{Ga9M;;3&Ye0P^DK zdWe^peiz@?niRS8<`kKNrpV>F$Q+>*voDp3sN%uGg|gLhf~c4N(f6Q5{{pw)E(T^p znR9>-X=$nj_JoNm@ohE(?D>)c`hq+4?QBsx!Jf}~n7*CQIy_bi!_&93)!}`{!}RTJ zbFj~Qn7*A89gIDb#nrcSl7oHN!}RT(>|kp&`S%68_3fM@*yKuT#`SgA%+dnvlo%E_ z8ZU&T%4E0Utmw)-ghMAA25X)R1*(Wd^7!`oZJ{31~6)Wr1)dM4y$*WV^L*uUtol_~&jTw3IjkzT+$&E-3t^W3m zAeZ~1)>62+cN5j``P=|0MK(a-^{gJyW^`uygJ9ebfaB?4ty81ez9&R(Ag%K)KfpkE zSB`1g%y2`rncgn334Jpi5kq~U8P%rk;rJG`j*4bk*|TM?1*R&~LBv>wX&RaMdF<$C3N=8}Vr_{hevJt74jatCAL&qUggKX9FuT+vJ=`ZwG;c z-eGP^p0AP3ksBOda=ImGp`7~;ae#FOkXEHcXmX|k1AD$_B97v-H4m1Dxq@&CiH%Qw zDeXP}Qi9|Df;}%*{zJiTedAL>O=Cpy3rV8AD2i{@mmc#nCAoBR{agGPa&HVwz8SxJ zadz^)d@GBlyC1B*$cbdMvr#!vTBoOXD+i!Z{IdQH4CG35UHWijyozjZ zWS>HEN6qxpcEy)c=guK})c7P)wUr?-d-J~Nq^Y#7=ljn#9=HU|A9ELWbUoL26(T`lm?2EmjaS5l}3es&(Jo| zl3Tj{xXKpTHR?Uvc@3P|^G<#D>BlOb&TyI!(08AH(ty)_fWG_mlLnmO1N7aepEQ6a z#q!X1pMG4xsaNw{P~xcuXE&`{{YE*s3-3q3+>_j`KzEr z|2&E3U-MAy+ogl?D-Pslp|Nu|9ko)Jl_b#SsFCCxAcffz(@ATI2YfWe81(>VQ#Y+G z^#FwaE{$a#aB_;V+yiD)j1?Zh4C&GsD|^USQk1cZhcE$qoT`Uti8o@$`aEQH7pLDt zB;j*710KS*+^4h9L&O3&oJAhO3hi-f9-_6>;S72Ri;~9~@{sP5j1_K;J%I7fMiRw8 zcCn83knTb{7JJBnF3vFyvR8b5=Rr36b~ZEh^p$3{9#}%j1^@`bHtCa`3sTW=`pffh z$_>LQXK*x0%)`PO`7wrv6t0(;)O=>UgT=C}#>$a z#2n*nci1|_!7<+>2D6AmwW0Z4Y{-*1l*Jpa4fo!AbO{cR9qmXQc8Ghm-$b)$3l-7X zL8t4S$Io7|DB48d<-c#!7d6Rg0fK1S{Ev3w$u_v)U`il!J_@1Ao_mcAkr?<+IpZCq zKmJA+Vc`Nx*D9g|#S`Llghc6~0&VCncaoN9S^{ea?d1_R|*{zw=um z@o%|ZrdvDvaWmtyAjtBQNE4K-PdL85{b{JJ01*lI#VCNI9RwKzEFATLCcG9 zSXa?L6kCHics=f;?Feo{Mak2IxgmMRMmAhc$c&n6*Vr~!2yEo-m{E&C%zL{ru>K&= z*hw3(2e4yCP1udWeb^l{YDHqauN#BDFVEOXn~_L`Yj@13VRvz>ZO7Ppm(%qe&b=RC z9UI@ll$tEu;hrwscv-br-@KtXR^B)s1XDs9t6W~(W#~FkAic(}wSAZHf}omrLsVG4 z`GbY!8@D|7VeInt`NG(Z z6Sbf*{XtNS8Q#Lon+r#F`5Z5&$<#L~^F4fATb~t7$usttjVH2&9BW>N61RIzm9^Kn z_vY$g#HBf-t_+jiTof#s3-N@hZPG^BXe99Cb3a!d^8?*{IlhyJd^bWNX&%!BjcCKlPiB18X=GXOj9x}5J*_}e9 z?KP#nUsHqj`#Jm*-8uZeEErSGero?0z~h_a3z!yyv6`%A!@kM)w%3P-K+jUe8p8f8R4k&x0%1@+92M= zgtI8eD|hi_&b4e|4!P%r5K)gW;iTdLv8w*({&bI;QgNcy{As8OAs-llt+9T zBORqNj_+n>^KoPk)*t>_8iUz18ZM1MsqAy9%=oMu6D6M!Gfn(ZN)TV68C2yD>>Z@9 z_2_J@9}Q-9LQZ@!Kkfct<{_!4)lJ4H$DDi#ftOVZtNwiI3BTGCf4;e?(shm(>ep=u z>(`A-CorJC=u2v+&~oR3!&M?;HQL=*$|1eMQI8Y0%RUPvDe>h5r|6F6TAJ33y3l1S z#UEUE1rl@M>JzHnhtp-T3+2KtH^f~HYb@o3EdZM0KIoAtEBY#u{~$h}oZ5MbjK=kz zo-KoXw6^ilO2tRZ3LmW%d~7v%D79b_G>u;uUy8RHj%>~CH_KsjLs3>+3{?GHyoU@w< z-uwN1{((Kuyzjg-^G=^LXG*?1oHp%z8)ISk8B!U-QW-L^)tluJOPM84FpDvygkHw+7X}k*55!^j*eXCs^hp~u6ZB_~$n!zbLGN_SGGQ8$7L?{(@e*25OshgKtEn1)MBD@b=r$_rvABfyMEvuX?x zDh*YC3V4~3W}ONP)A3e37SitN@HErG@(gk7v~=e{Eq4^t6}j$?fi-RbFRX5jn+K!r zzsL{cj3wqJ+}ogGMMcS>vRIB^+^~nB8Rs}6Xdv142i-G}9_f~oAJ$8= zFq-8iWp0m%UB?er@QY*Fd{nJ>;irwmkO~f64{k`d#bb<{#u;)}5gdmRbWevK>8LZO zfRPao-ibpkET?5`9N13F;cNsXKh6+!VHK5PqwTeMIL`CqM1+nY&m{ zNQy+GxP>Kdekf5(7XOuuT(0}8pn4ZRaIIlUF4m0&u3y`dc%PU(^^!(Uxa*V$I6J(oRJeulCaRR2O6aGYq_ToW090&FwU-3Ci4%dL{~ z<={*L$DND^S^-B#PDaC_N-)G3q6xVvo*a(<38%>M!Y-Ec6A{*X$#Q;BvYZDiqA1`P zPh%ks3^$-41Mn`ER@)2(ws3#NewbhES?1q{|L?-&0J z>g0@YL<}SG($xA+gm`jh6z5PDWrm|d3V$tnE+jJ!8){9X@HkLCnZ>-g+Acza6lr}0 zI3uGar;kM17vm8cUNHQ`a89T-Md2nVR8);sN+pHWPPAxGpgdTB4O}e1mEn30Ov^*{ z9Ej$I!!5?*zBt?kh^286^zJ#4#hrf)=0r{m2~jX&@d)^wTn5wvRm9sKI~8fZZ=2YD zZO)?2k5~-~tSHo|7t-iOk#YeBRzc7QoJ1ywg+94-R*UWDX)`^?O;a7mP?j*{tfTi_ zkwmm(XVaDOBNiut{wtskN3QVCXpyfmHU?hEvK;pYG~J$OSl2_(Vzqd97E~@a&G=`j zW5qY$Klg8n;me^!*sK_u4wpPd!>EgWa*UU!=Q+k-Tk1!Oo_Kd;su@oh;mRm3Y+H#Y z8uuhOu*6$T+A3Pi=7Yz4NWwG>DJaWbQ9u46O-^N+U;tR|uGmMK{2S_c7Lq12jP91| z*Dy^mLz1Gqub!uvpJV6J11}|JlJK&7Uu6Y@V?Way$E{9OLENmy`E7iX#dY?4#a(iF z@Th~QOaq^=GD4TZ*m?ADy^aUDj8AM9nfprJSbZ}5eWyig_;^e6z46k*Mb@ztGGXml zLVG9Qh%Z9get@>d=rY#mG76rgm-ogA$uP*_Cf;iE%Na?0`Qa|9R#08aJA|c_V zI?bU=9l6+rG_PsoXs#BJa*GK+BRY>`tQSn z#V^f)?5UJRGBh=4DXs zO~~W=OJJ(Z!6f#jFw|a#M}jQjyEj83HfkR!Xn0cZ#EdV~^Wn^|F=#y*2C@m0A$|rl zDBXI^U{K0|Zev+r8ntIAkm65_>E`7lDm1gkEIMShm4r0;WZ100n(fu%q)z*iN%)0hKnu9;b9jHokw#Jy$FJ&wk9LX2HEj`QnKH zSJQMgT1{@f6qy9$?GYdG{peCmMPCECpfphKwJ>65$`S&0rd$VPOqK$r43@>MI$Fvi zoGl{}ihSL*-Eo-r^Vdxdvg)p<4|U7%#JNRynlbMQh|5QaOYIHdVHNx=$~o373R>|h zj^u8H5wl~Cc;T)9RiH)t=T-os#^uxs=HO5x8Z5WZl?st z+%bf|jp45bhv8G!3C^Mz)DSoEfxa5KP(vi@DB!Na1Io}|^9vT>%RSCj$ah2lTkY?l zM|+$*0ivCI7u|TuAz|(YZPnd_ryaYOcJeMz1HHCWulvBFUKE2ul(XVz_zE#yXyx9I z2UMYr=6LDy04#LK4^kv0 zo4nYwFvEjQo(Jx8Fy+Y;_e`>CR7S85gksn?<0Ul8-}B&DbuY;CMLg};OO#<+k3*b3 zWt?6HhiOe&ls}3g$;D0l(Udqj;+s=P0rwR=knpr`z-Kg2=>7xPPx5bul~uPzp0DC* z$6muzmp$tA8FhLcEb2sI=tMc_B#z?S8t5bvbrf*lzymtb-lNh6NRA@<)D)|ivQF=Cy}V5fcrik(24d=9r-Eslmf|m z`T?kYsfUXCA*`&rt$5n8kMNZIV_o@zdTj%TdQl1rQOt@L-<8^a(aPP92UMYrBVKxS z=4#TG`(uHDBL)^p<@zr4aB@%TMaKFR@ z%Fw<6-{jR-u-=zS_>A{8tZ?(IJa@?RTRiR9cX)d324Q<&7uRS zD1O9;`YIMdMG>qMxjKruJMn;`l-h^w5A;l0e8X1s{2WvKjUe~e!)$$Y2LXPNAPeBlBNYX3pLz}}aBo|`E%tSpL$}-|TvPmm<+%7J zsLLj2AiqVJSwY=)$|O0juVcIEwV2T?9JFkjOvv+l5jK3N@8B*Or93wPPt$5GJkxOk zlO!RgNc3Psk}zh&4qpO-0BsJr=rEw5P>u|0YD2KaL7NUB>AOB+sw5&Y*OuaCW;7BD zLsGlKJ$BKoP(*aiC|GbblAY6C`OZz4P?S{V+!Y4+OAtFZ!Vpr1L&sqzF6>6Z)xqGT zQ%1ssmInS!IC(Q2Xt^08#gJo}ctF%Qiz=Mp)a4+ozD1gSpPI(WXz4^tmqg3JMN<1q zG|YDUi5Ag`7QyaQoH(r^mIWo;CR8UI4-<9hz}w7&ChAOye~5ZSqK>?1RQPqoLn#q= z8bucG6VkJyoJ4gw;W1q(Cqac5Q?)ZS?*A|4;~$jP`Q_#y(nj$%$aERsx>Q`}RAYtl z+UF^(3k$ZUzGk^i;XsDemB@-*5O~RuEWv&hP;N6ku>FGRljr7>7@$?tPGbdRRpm=T zOK`}`J?61OaP3$To^CM(iuF7l)5m5#RX-qo?CF>(Mx8h3*I^5P3?EX;%k1gb$zV0l zEycS9*87BGx04^A&$ez3UJdmA6urUVzxug)KYp$eKmW5YKfN&${SK)P(Dz5^8q_`2bBfW8r2O<0$L(lZC%TYcCcZ@C?T~irK|;OO02Y>RWN`MR)iZJ3y?<@YLRgW92a0 zu?jpZalCFNF$2foi1tx5x;WszTLT3cYQ%)u31;n)6Im*o&E0gkk(KGttZI|?xgs}M zPnGOx=OfufiE><-*O`GKr3OJW20CpvY~2iaU=+&Ktk|(=-neOkN?`?WvYrfrMMX3i zb<^Oe90`RnuTjX&1k0<-97p|(bd6`d^%r{pyI+h{=A zR>Nc`iRmk&BDQV$71B<&24IVZtaEmKZzyZUsJWe*o?aXF|C_!q?^j>c1wE(8a$*(4 z4uUSIM!Heie;lM7NE~$0FzR=zeFY&Uw&N=uUw5AXq3g4y@U=qy#xQVWIl_pA(3>Ej zJ}^sJoe2BiVPF3Z99Nzee;QepFZ=9RY-MLyaeUo9rlyItK8r;5p%v(>J;Ls*4F3yw zQ79ao_gQp9M02s4Iq1Fy`+@|+Fzo;uFolHzIq@6rh2MiwzSH7&-DiyHjIno&ELL*~4jCY)Z2t5Jc4~xzCMdbsO~g)6++9G)#+cx*xlKB{9+^=GvUGCCJwIJ*1>LcZB0j3_p>7 z2q!ZVfBgY0Ymtsm^nkkI2I__jlUp2NR}`g=+<2TDlnun#JAoj|6JH^{BJnShzG2N0 z2YaY1{zec`4Sb8xH@%HHH>7NBoA5!Z2utGflcQqMs0iY3+X`eM?|DX?yG z3bB#8sGhlMHdIerhKRHOZR`iV{wF_J1{(M=5o4y4kP~+7V3b4|Ghu=E4v0zl(C1d{ zhK^PpnRdR+=fw_THK~0MYNwkqY^*O>8Q8b!zaU_-3Vk0cz8^~8`{4oKzoqZg{Sd_e zFY%i!ThBqT@Z<-1c+CG82wKI%;BoA5JWBdhqnADcCOdW{p7r0sW2tcNQ6S5(0OvGG2yu)z*NT>BLR|U=f2HCY6DGMd8>G za5_XXw_+P2E_uSRE$sumIq2_zSYdilG7NnF;6=kZ^*=x(Wa0OSfZq!B&rjD8=dwSE z_`alY*Q@(6of$uz*iKM#R#8O94lSb&yHFi8M2F3`xD;Vy9U9K*{S*d7D?8q1Esl*k z5f8l;*QxtnXAROLtmZ=AhP?YB{EwdwDH)1b=3G-5U+~0-*7#Vew$RU%1_LV6UvV#A7Fchm*Ci9wRmsMl1t~eGY4o38Y-*ms>Ni)CLPabV53@VGu%b zF>xBITEt~3ukmyWy7UQK0L8@qGN2KK_e7k|liiF8VkGkJxBfbcn{r0N5PhOmm1MvE8qMmK}lV zOPBy(0Py{#{#1y{uwKVGsE$OOrBBC}?5`l?5B@sDZ$(_Sw(&P$#B3N;&?D@P$lKb} z;MdGh{aAn#I~~um^(G!z5<*$+IOr}zK`Cp%lFmc=^VSI8#=KBLT6wlzKTiDOTMzeF zV2gGUURVo;SAAA?npJ-W*rL0YGL*yFc#@#;t-iJ{)+(7iwN!if-xU5Mdfzd6R^6}A z%!!SMXIxC9sWU;9@z{5i1HE2-zi#lwP~3!K6X?jNCXyOp)lLG=qJ%la1gk(NgOxuK zi}~R{_rbG@;XcBYa*n;azkn@OE}LOryyGCh3+O zZ7z~-TR6>du`swivvvxC&Bf%$RH9RU4Ep;RjT~2qPNNN0cQS_jiJjVVy_?v|X%u1i zL?osh0>^Mn)*VN}(O4WbR$0~pQo?B%z1nH8jZMd6>q!{f%t0*UhajvXJxG(u zDt&4U=I)ZdU?#87c%94!Nk7=QgV9Rl1oc@RGLmy*=OBc>ykk$sbNbwa-m2SFb>S8O=OElxcC21Yx#ts$>vuy3-8O{Oc>0a_+3{MY zJ}=Wqz6Yi`@v;NJ4ZvM`a?U6|o1$dmCP?-fnbCz4^vrKCAB#|X<%DG9F9Wb#CxQvx z1cZ6tQaFm+2=w%egP<@xNA=9XkQ!@IIg1RBs-7}aF*$k?2Ce;Ux{j0|sAqjDU@;r5 z3oI_s7OgE_qz*+~@f3TBeTg|DVNa)nibFIz7n_Ksw`x2;lWFDPrVH^SQr-f0sp%o) zg*ue<6x-y)7>56P4jkKq`EHO|5W&NpOE=hq9GeG&%$wz6qp?5OJj$xO2o^E~(CY{O z&XF=xXbRs0rb~Frqs7Y2%2y2vJUt7u549U9fxpOar zB@Ud^@lD^tIU;GVaReR8VL)Pl6ZS-ZT4qLbovp{sbaE~&}l&<@I z)iD>VVtEn7I0SDkDnrWHWquiBn=iqoe1AxH;;WJ+OHba=cX=(ZNXxU`1qc);B3j<0 zrDPRTMB7-=u;gCm7E~GSebh|T^UVzz6VVxi7e*a1%JCf$eYf5#ktupU{C7R&{7C)z zMNh|wLJOIQIG@8z`AO*bBJT>{3MZ?Q*rbP3J{sVKHRwKomMeAzV}&s}$84LCR#^>o zFh!g5b)18|64DhJa(javTf=T8nYk%SCWDqk&vYGbq&ZI(N!2_vsx{BBFzmew;pn;$ z8Vc_nTiBW_I^mV=bI`Eio@^JJX%S3tta zcx74`Xv*A-6bQUh%7hN0+s}iN%a8jb{ znCPNTvmm7x;59#8M;9reOOr$wtq&>!-)YJbUw$LBB`xtKRpxUl(Hu%%;=*}zPLExN z;hcQ`>{J^@HYcQo_GXeEN*OAeX76dv)m1S+`?qCTWK z2d;oGPAnfj#6MwhW8g$4xo{sx;orF#-t{_@%*{m=r$u7d!N2-EgdoF?Y`Cgj3RZ$F z;qxr(a^8k?9D1ILEv?ZmE!FW8f6I43vvBs9lDf!I-D?5llSH;^S>R zYIC7VY&onP&D^I=W?Uq`DF2K5hE0hxl?ne#ax#jWG9VQ?mi$ckt2V(S~k> zxlbD$9e-9_9-AAvDSr$$^0)}56b%xrT9O`^tNMsi{U66;9Ue)kux9SlrsES3m&XE_ zQrsk1h_G7H%wxFCkh(b3w}23GivS$Y=2M6l1Bn5Q0*@gEFbX|}7*rcjW4Jo+XWzC__mRD8*-XQZO=#k@e!mneMkULl%`F73BG z3o$vpB*mMw@}?LTQyF{%Wolqe!!mG0ozLJ=%I&0>!^8ScOWmMaZqV;cmiiRyRrEc- z==lOA1GJfI`&wZj*bI3Q!fN4Q45OPg`#{XyseGhZuiKDOINF-~M>8T>I0CveRyahi zIPfy?BRm$UY97|Bu0s)5#R;G^G6OoM>y#40aj}gWFmu zy#?@au#UyAye9rVN@HfPYeB?+79(Fs<9~{AHjRNNAy9s9JS=#2JX3H&JXi44c&Xrs zcxS;HQMoFF&6CxKM@l+YXJ&;8J4NCLi*0qJq>aZpTsWm!&fv;umeWEq0IoKWYMIU!xx z@LE-o4sK4kg?lJcHVgNv)z}o~iRwAd2-!7hrO-UTA7vIV$(2znDqBRc-x31(Eo1|! zKG<6JboM=N&)&Tb#B42gkUkQ|8IjBAc-lldGt`KVrv#mkVbVBEsEDsHGst9-KwHdt z-II_9`O+WFL9+0Y_N!POf+g8YRlX&#KNLf?&*C3UMnnLTgv6$@%gpF9*; zz&_(v2ym_3Z9pt`#xwaQ?P$hyt|gdty9n@^=eFaBArnjWR)efvgGU*NJAA?$6X2!r zPB2qm6R{ZPE^zWhLH*_keQZU23aQWCu%$lt0G&EMlW&Nc)?fY^`n|B#?}yNoq6O}e zNV{40(d{1Re&5>D2MO{3m^wl7Vh_SBeW<0FE=3G~EqDz7A)r&oXWW15gP#wBQTqrU zev%_b>p+{Wa-6X7(wK;s$eh~sVA9VGK&Ot+xc`O*KOY67p`Xz6F)+Q1dmQEzJ)6_d zC%~hhPXe7fJ{$P?6d1Kn7u#rB^VljFTfiuLgu7WSVN~0H4uRW>#ut|!G_jjq62*a&WeDucbB-=x zVA!5aGJDkA0l00-~_AV^4fN&Pc#HL&77vL%cyQB$8^;GP~d2LB% z3wi0N8Apx{fXor{^xGbIXj>-8rb2#sNwDp6mx9bKE6KyMcbrb-Sloq-=%$S*ITeP- zu}w=_0n0AKPB3khV@DRDIRJ;?E=6-vdnru+qx{?k^54K=rS@MN#s3}Je}elwb1xT- zDdq|+xo58_zhToA|6gVLE}Vc)05>YQFCs!|au_bgSw&X(@~03LJA9@45-fOWY@|#&DXuHn&Y``u ziy6R7`qLDrinzVmGf3M1ov-JBdO_ai>sCqc7+&WQVzW+JPDQ#ty`f-)QysSRYJyfx znQi4ea?ArLeBF^lDr&HRxnW!@a&#nh{Lq>qQ*`7z)xQkI6I}6T+NOR8TfSW-TMaAr zibUJIWa7gVm!Qd(wb+05V`JiO$=OQ(>>objZ-y^Wsexx6I}iI4MFA6h6HUdoz)ezz zq$NG^EpdadJ{(v|vCfa6?Cr;R5aW{raP&P6Q;59^N0D$vX1u6{Ix8%%>gA#MEEXuf zwqvKi6?>O6>vm@JNH&Q4p)peBxY+kFmQ1Itb_0sjOxDZGU{S)hSnlM^$GIC=!7>FS z8V)dJs*=O|icUT7JUMwfPB%E?e%SIVI^pNuGZAEm^3Dy(*5S%boLb^rXBTAP;@`@s z&(SMeWSCTSsUCxrEwthRh1hUz9hW@gDQRa*U#rIgc-6@l66YSuOFr-6D(69TtPA{( z+!}Ez$xE{jEA?iRVW(?vV_lz%CLy_@1bMicz>o_LD}66 zEM?vxU(d26?-%eU435&SDtVx~9JLPJc;k>+2QTwA(t62+1G+)&5cZ5inkQ#td*87P zUGr}T9}5R_Qtl|S>QgSa$#%8$#{5XDz`FD?hu=5KMqOyD5xrKB5QZa9bd&vBEz2j**HNHn#C zmGq2yV;HLaN{$GzED!Yp?`5$*z%na2Ph_&GqN5}FV!bCCT&=IAzu)T1c4DW%VgAyx zEg>|=GNZ3Aj^N$d`*tGns)sJ;vt3TnC3z2(7kC#x@R#-cC`}9DM`g?E zCX8<6c6)qAehVx%WFmnNi#!F;S9dPYJbMSpV&JHGRZp4XT{!yMeTcdq&xMky-wy#*w?-fW`Zo?^S;aS z*oWZZ1MOhE)o+Cnm(Q#RJ2T>*3Ba0-g6bw*#)DqEJcj-$tsI{balTEH9Nf=xJ|~kg z`-M+4m>k2G#`0X8XA=_D;9mlftGo@D~-g+xrO+?%~_<7C} zmCX{B9{&QVWDZJ{&%~zXXYQD`AM?<%))pMB8er05ZzE#DFWVH0<}Yvh(5hYBwXgWSTb5J{l^E8lk+g*oi}>zO`0PY z)K|37m!l^?f7!8fq0O}ATxIP{zZq>#MRR8wF)8D2henCJWiF4CLxh~kfsC=@pj_r0>)xw7Z z5FWlZBR&~uRjZG)rPaW=oK15*_7Cad*aX&;lfg=mCH&;dIhauP-0GYigiTQsr?d?sK~Z^Dgt)gC+G&se??!V zza0VHE8sR*(t32o37AfE$1+dKd*He|`cRJ@23qxrR9zO>kR^Osu;M-mPqARYoeadZ z9K_mZ2h4RL>-6~EmVHQAanMM|4%G2$Psh{Y6gk!nd&Iv14~q=AcEi%!4~sPwaYsW+ z5;xPqYNs6#lw5LR-@;h+4441eqwP){j@qaCvo!zGNods-qsf!h)Xn3jee)}@&r<@| z^0J164FOtuya%FA4@A20Z$HkfZ1-U3Sy5)YhXBp1Pzy~p_F2C6N*`j&*|wdKPQ5tc zgJWNqLb;Lr+-R@&!N`f^M3<&v%|~8th%I@-wB*h#Mhh)C!R?C>EBjiqA_EQSY&N9d zA#vD9xp+Iqny6;gP1xW|Vtfy)@|hMo1WoTGJ<;=w(WvZf<%D#re1Y#7-j~EP9?{sR zp=Xtr*ND&Y#o356?96Dh>dXe>Ie0nZgnmwB;e@`$SS;445cU2U^U8ik?(tH*1*6I? z4vB11v^iOWkWI`!zQCsP{p^!+-vz1J8R=YmAv8=!S4g+v;4J!Tm2`{sMY<#H=2Cxt z-gTdb?$}kw_PhgL+W=_4Imc(}o{ z4E8k00jpEeuG4Yl=jP9U676%D-ZoH{KXLwxB++~+r7!1dOC$gERbKhES6~i8-}=SQ z2`|2Zu$&lL#xo>w+(saxFLG*X?`ekFkU&&lQN>mfFQQm=CFf`&DUM>nmqg)0W@KC) zrnU7~J24C}-}vg=gFUM)?FMFPu;v##y~_grgZa zf}B3L#}e9EG&uHh%uom~G~9Dj6~=c&y0LN28oeb4V_z=?Wp-)mdoSQCcQy*LA zv+;6i^s$E*jue%#-j-fMAIi$N6rTnkbic5$tlb2 zf|BXW?Lw<0V{A#2(QZd1)N;GXYL!A2Tg53%y`x*yPR*s&k+#Hw&So4ebX z=lifJ);79~oeMpx5wE{Wn<1oo2_fN36{#MVXWjnAOi>!|wjLhp$ zo|!uCT4koo@Zz%@u9&`m5nr@qC&a8hAawJ=JKtl;WUy!LrByAO;j~!+Jan0`I2AdkpHJC?axfqLZdoo?p z%9}f~?8?^V7gK7u>kh9p90YQQ1^eR45A+mUWB`m<6!yzM=>`&qX4q~oBBTXlq4t!XY4FACB=r02L2L{u*F{H2`s_W%m# z&ng3y_k|Ba*O6R0s{`%ODFU>o#m3XEqj3F)_-KhJ#tU?z3GD|`^ge7tKtjL=>IfNv zCbaSxr*_9U)p8d>40k$W;`|DjK0w;_!^?gUn)8q2ME*Dof=H)|?Ub%v9T)ubkQUcLcR6)JaA)Mijr*vecK=8(Ij>2?Saf(7L zQFy2aKXS0_lMmI|pfWob6*zWz>g5X-cC14^;GNvaR-3PxMv)Z;sYF5xR# z!VAz|B*+qeeYIzK6DWOGiwo}sEGR05l*kgl1_@&2= zqbh!X`o!y+Uitad4b5g=Jha!Uf{V|oeq_nZkM4Z)*}ZjNj-2@T4d;wXd+wF$O$+WE z|HbD=cKNbRX(0Q?W&`dUu(-uBX-}Q>O3UM4TJgt*V*--~{Wy2gz0F=+yJ*(UIq{u+ z$8Wje!&`!nTsp?;>y&-bGQHCgy&fL;RLd8N+MT}W>2Ys&n{?RB1y8N~Ih?U-^@$yh z>wWOukN*3e8-6+O{ZG~{?EP@?x{mMlSv~g8kFS2^g?F3$R&(6(w)`-S+me+tQDIulM3z>lPkWb6oAF(c!1Q+|&QH8BNZbc-+7NN1pg@zvI3L z4NU}3&zpMT)XneAeWc?j8*cjG)WJU1edWBms+YrGPCDi0 zl}Fw4d&S20Zrd|++5BtY`1hv3s@OZPpEuy)Evq}f>wX_?KWJOejkOa$%uD?6>gYQM zoOq9#bl44>bD!$;>6;sR_xydzQO<<#pY4BI&&7YHwK(|6nk}y$_SKjne;)t*wydTf zmQ7oG*)6SJuDhf2!4nr&+ebC~^q03zzV7#rB2S+3|~FS{P(Ewn9sLSloYVj1U6GP4x16+O?L`A) z^B+iC-K>js?h7sM|NM|UUmJDFX@?&F@GqAxU%27SdHMansoPk+YVqW~8}F&@|5erj zm)$#V-rzl-zd7%(&4+)w?#i>rv^oBfGmC#-Q1|@vlMfis=fn%z7rgSxt%v_`?YYb5 zo;2sCVI3B&uYEZF03ggd0&ok`ChsvXT-~6L}H7|)_=oq6bY|vL|))X2Bbqap>fnS71=xp%W zy5PS;9hT;tvtJzNoCf+cTdA*MUIRI4>S3lmNcld?@gORyYK0$aB!0BPE2kQXPyR#j zbJS?xbcSzQ08?CS@5b|bF+GZ>cJUcZn}qkH&)e;roLnuJrYc}+iJznT3B@?O*4Gcg}&)3-*h8PI==V$ybZqTTbQ&~f5N1-Z-*D1Fn*5e<(p21N!!*MQ<}O2 zCZ1im0`^t;mx* zpx86@^-aTkQ(L?+YM&2BanYuq+j}nlFs3YJchJ11Y5-<84#Ce+Z{VqQ*?oZ4AWLmV zKXosDS!!MzZE{prxz;LQX(P-lQ5)hWEj26Ml{wez2D=v-^5!`j|0gseAhC)JRj4@sW!;ouy90yp66E7x|{I zVPXx)Qp-;8Y&ZC(tuX2OaT`W5%!Mp<$%&ra>XSXw52t#jqtPTW3`gyNNxOJ_yk~p& znV!j-;F)$BQ=0m8l2>9gCwrz2zUesMG}Sj<>6_O1rY*i{mv3r5#q;kb%#!JH|1(Uw zTveRynU-JZ)y5y^dc3{9={GcapX2AKHWz!QyL?jy8cuC{*QK7R=Ve|Rlr6+cQ2esg zcw=(ZI+(Nu^Ok5AX=>y$jJ)u}S*Li?7CGqi<{6%&E?wi5k`;Gqxi)GuOe{HV)E;9( z?Y>+4oTVngq-*V+FtH9cRR=zRp$~rf>cO>MIlb^DPR9x&-%@<^CWPWz@gzUdm6bQ;|5 z^G2hs)4a#-^Gsup^Gwrx+u6QtuaCTT<4BlvX_^kx1pFLzk>Q~v!lc{wDZbke!P71E zBUN4)t9{!{V|q??-sZ)qA52=m*L}IpzUgq^G|V?GGNz{LY`A4fbX1-1%Qe2~9%E{% z-hzq!LQ}QXH~rUx-TySoRbZ}D?f#wT8k zj`K~UI%!_Mnhl=rXBPOTdwkQEzG;_l`qMY1f9km{@=aC7RIHALN%u$fzG<#++H6eu z>OGjW2A}$-^3OES4kUA?>T@q1{e061-}ERM_Fph zPLDUwm>hNUk6w+sA10Q>EVT_L-5>n`6Wc#K;OtWJX9x0($x(e_(ye3rpFFoyV4~YJ zwG}2^XLiA)<<9w4siF8e>MlGl7t^M|7k%`+AIrfT2h9_qC|^TE@xyaOhNmZcsy zCiI~&=^Ay=@7mNxod6TV$WoJG(sAqbho|#6m~=mLBvMeN)w+Iv#22Kx1;$ z;l62vZ<+v;9-q#INw=pr!=z)m(U*JsFOT<|Z_3-_Y1$Dct?3w;j=;}R(|yxIn6%Gp zeBNWe=?!B#-0F;a&c7^m%3d$Nr^7^_o2nHsu?1jh>I2`j+c%X5J=^1b(>UR6^A)nJ#08GHi*p-&eJ|;fSM(omwnE$>H^`sWjNii;}%0h z__N*T9Ir6+0|(8SgypKiYJqTmF`Ovw3s@w{MZKv{2yfF%Bu+?J6ZZ+=plGDT{T!qP z<6dA~4TKADK;iUIaTS6#Re=@ok(Xogtskv5I84V=O5vO+GTT!)Lq$WJ>t-}utVW3p_WKEEj9RQt6%N)& z8O{=%Kf<^lVmLF9Ix*o4@j1)X4B^ClSIbnLaOV1)8?cs?{w(%6E7Zlpx!vd7q85pU z>kLP!Thz7CHd{SyI8ks`ip;CN%qn${$ZR#7+tn(yL1cdLWo}i^i_BlX%&qE0k!fOk zsd1ZnMPy10=XQ0QdQCVu5K&Sis&41)j?m`_!`Y}-^PUHAhWnf~YKL$p8qUk=4xal9 znL1zQ4xWq#&c!JloVf$ek`xY3x&Y^)6b|-*gY&%M(B~qHsrruLj8S)Dy(yAa;mkr) zG9OX>go6_c3}=JkGzof~#|;Ndp^VJahJ(Xn4Cgt+Io9XAY&fHR&K7W1qU=vJ9Hm|d zhqYja;S_;$1oX*Pmm5w-;C(ezI5+t+AE=Y9*^t>_I8pV1Iz?oj^JP9&t0nGR4JS)| zrtTD(UkoQB@R_>H3bf8vSs@*ZQpnsRuCTg9;#CCBgW{^E&-p^F6V9=QlM(nrt;aN< zQlkwgq`p#5SrKS>w&Ao_-+{w;)%*VZs5VLHiw(yO>{TBN=XRfC1$K%)&lpZrS%F`{ z!M$HTrzC*##ymBgkg5rshbAmr;T{2rMIKri%?UV~Gf<5U+-0*QWE&1n77lzSu8IvO zPt}9N7P~Vz{EMnf1I>d>v4f0^8(0$P8f0D^56(#ZqUyRp@8C*E#|%fQrGY^~=5oC+ zvovtLaON7$jKG?}dqIYE1vvbRqTY5xLz}JcH8SS~?hW)34)!2QSmy=q3!E5=B6O@Q z7EXKhK;U$d!TN0@vo5#470|)Er;Pbk`?IDJRkI3@Z8=Qwi32^W!M76;$s@4ZK zh^s>lXIWr<;Bn#9_?!)ar-d`o=R6wNB%C^*^F#nwhrs8He9n^rTt@=V^@bBwPY2!+ zomYaxG(0cxY~X9*++jH5)N=vcg8)}g7|tQ!q+zsy+HE*90xtwwI*ivx;P7vNdMPkm zWPUU<8v`!|u&NRH{wp|)X$Uf-9mYKr@#6j#I1HV0E6yXf?IqwI~me7ZRqsztzf$74TYB+hgTW^NLa#&|LA>5)gUu5PP&On@{4i01% zfx{6<2q$bmAe`HL&hLivn9td5IGcUWUc>p^=h&9^ClK{~ju=jX&&dGCE8(rdjpBS0 zxI$|51m$s9CNYlkIo+*DIDwLRqR;7V6^8?@v(=e~;|5N#nuqDndA`hOt3z070XY1N zs?)7L$R(5(U*-&}pK$K*IkT*|aGv%#35z8#TfJ&HgVZI~Q<_?&fC6X85+IJ4CgRtw?0@=KZ*1Og*!f`TmSSzfLtdk$T$#D9naLyE&ktv+X!oj&Q z5(~OIOTxk`QsJzyezK+s=Q^LW*P4TRgweaD_gx~IB!_}?Q5ee5XM)A zqf~!;NtE>+FGr>%^tZ1QpPTxe6YYD%pRPV%&!zlu1gSa}= zcQxF8RD4bt4*GZd3E^B}I0Mxw_Uq#F3UDSt(~uf%|0$fcK4&aAOrK5Q=$>(c;k@B< zV)kB%*LOar)()jH?t2Ue2M*b}sEgUWklFZCYv-l0WVSb)kUGciBr-jHnU&-~roS(9 zvt6CWG#ui~+zt-ggfZaouf4j%K2lu8d{=kb$FdTtdc$e2?gu9U&H~?`&Gw0DE8zZm z!@-^J_GHoLZeQkYdrDe5!b-M3AJ~^8EO3m>O7)?AO&Z@0-v@_(bJceHK5(+tr-ri% zoV95znLqnJZ?_+ou$rKFFrBB_+wCVMrdtwe;{G4@;N(g9J&md2Yt>i`!nIZ;B$Vp zzY|yQ`<&nGA4TRfpYw3X+ukeww8`5_Y0@;8&76H@Im3cy~E=S4L&ZMqrUYx zqk_)~C;FYoIW4$ZIHf*keDH1IoZ)jO2R{-{$L~E?(}Q0L=h2-WXJ&9`BhE#^KN@is z2ZI?*v81b8f|j%%D`-27Oad5KGj~?gAU}*-9gHW}G(_U=?r=dT8=WGdr1=+B9|n6haK4SI7tn^3LY(-q=sJy2M8xwe!d9~Y~*T3aFC?W>zI}0 zUwid!aIkQ)S*3gqQ!E)4Wg3>=?}H}@rz49w{-Wx~;EBRXmcyTdLxsaRA1(7saJX>3 z^*O%>PZmyQJ-_U&&dtdiphLZzMnwgPShy1KXGDzQL@Iix*8{BO0eS_NtYZ6}rcUfK4pTK^Bt}4`0V-tf#f~Bep zu#c_v?uRnlOZWkG1aJW8!N5Vl(}5=drvq8G=K>kO>kY00&I=^tIiZB|Llb8iJm27a zgG&tFZt!7)&l&tsu!G{-qd~T#c7onzIqFxzfI6}@@&|g10`9U()gs_ChzIc#pw8b? z^#N$=-=>su0d+8tdS3->5Bv&P5ez7+jmCowvb?Odb$q%9hbD%DKM3*R*LgwY6Os8t zWVt1tVeHQ`$nW*!pJ#BkL9S>bf4;$M3|?>WCWChwTx;+NgBuOLB-mBG1{@l!Rv!u` z%b{0}S-!_3o=#hg4S**D&jEVnItIE9^ju&9xD+@S=#~F%9hh#({AD>Fk91-AC9?by zS$>HuzeJ`Fk>!=h@=9cRCbHa)59)f`88aaj9d*7|8SD+58%&0KDd=ivXyPitnnb2c z`5pGU#_c`pJ0Dp(Uod$OcCjCjP#(9$ILlaF678z_Kn3Q9^ zO+XLUFJd>?CsN84^_c{IKkz4E_INk2G~HIwZW@b$2Y~JltVXXG=&sX;`yg3QDhwV2 z90vQXz?TC()CoOk-$M;E$ofy3?F4a@;ZHSqzF>~}yeINAvs4xI(*A7#G9TVDXdj4m zj9IoS1eRnaj&pQY;|k@b(rdUrhJ*`5-0J8G-Ba6cFEy$Z@DCqu>T5}0PY1c z-ubMigjAlt=}K(>pg1KBQ41+ssi0c5*)0g(Otd|(XpH9)U@^u`6P;2-m;99W8S;I*TN z8$R2+6-|aD797g>3`wj3Rsx>`_5^MNHcKCp*bS@#UEGiHACl+;tagSZh5?H}$AGPX z3xJb?LlQRv&jGFjJ`os_coVo8_#N;KVB|2C_aTY4z&c=GAl;7wz6|?1;9T?{i-3ch zRI8hS>yfWIU2Kyswn-N~?wNsf)ajzfKl4HBbU}W}xXCu@V4HChP}0FR>0&FLE;_$| z%}$m(=6fI~SsuOe$NWzR-z%5Q$7Z0J?)!@+v&k(Fh%!WU!G5+ItY8=8{0-EEe8-Xn6 zYYaYM@F|0@09jt%15SjykAblq-5)*#y2(*kO$lrTTn)K0p!kRMCEXJ=-5&;g5^_U; z1I)OE<4v{)D-oaL`fD6v@N|Q$|FoZO=vf9i?jV1*q1k?t=6FW<2HB30zR1X3X>h4Q zj(cdoT4A+3EY#_e?G;7*bwLTi#&6?(@o4>?N>lr!f zeS^7QY5FAKSKu!O2F91l`2PN;rRuQ(bXTf20Uw5czaOjHomK;N`W*sfx{We89hi<+ z_-lcAxjE_!`1kAqIjZ<;r6!-L`#Xkz8R+nY9JK}5c0xcEquk96YW;2o&2dX*UO-)R z9O^IdO2Hg;EwCqO<~!dXR)gM%arwi*K6zc$MuS@nZZo*U;4cP)gS336!2*Nr1#LC6 zMyWA{wptDx2h2JF?H3N184J7>;Z6avU%KH`%pDe$s`bD*MR?x<&c!%P(>>Jdpx=W1 zyTFftp8T;^%GGZr`wXcg=6z|pZB#eAqbE1=?2bo_1u23w$AovP`U2CEEmoXvh< z9O%w1v_H=tP^vBfP5!Mwmh(X|?1gDjs$#%7&_nClRTZ8Ef8l>A@Fn03;Qh$wn^7-r zO&Le9{5!4C4?=(9<+U2GGq}RwYJ=+yZZi0u!L5P;Wly8~fI14;8OZ!!hVc2mFaY!d z@J|8i_?60dmgRuug18#?Re8zwhWg##RQK0J_SZ!A*F=u5iL9SQ)=MJmC6V=#$a*P! zgRGaNS^tQv*F@GsBKKtw?G75bJA>($F>`-7=Qymg zi5}NirnIXZr}YG%_B~VhJ>k9z{5}SM7(_bhAJeBT><@!Iae%=Z!K57fRoD1We7-N~ zq&?po<|F@4f;-}9!BW-YTwUH8kLRugpZ)h82A?(fp+RrF_Z#TGIA(Gif!H6Ca&V|Ar=hF&If`x}CuT4GuFn!{7pgD-EtS_?p4*4dN50_+M(U zyTRiPPB1vr;N=Ea8eC`aWrN!c{$eoe0^`5I9tH;(9AWTmgO?awDcD0j3_PsO{>HgT zw?2AY;-x41!x518(({@*=pR9|eDQtaDbP%3mP_U<`D5Gu-^v@^vAhu*m$yIR|C#WQ z<*paPVY%WNMJ!K5mM`|tqYQfG(ko|;%VlbLqn@oU#QQ6-J#aaY@3m`yUcK80{?v9l z+!;WIOQb$?fDE7V41Y~q{eFDbxw_wd_5k=Zm*qHF-`Q@AZL8ZyBHK$M+fO3fOR;aN zk?pR?8Ga}DH@2-FhrQO$EB89wW-}Xxv%AgE#0tn0?-VRm&jNpK*HyKhhh5I?yQ(3; zeoeZniNK?Ba@2Xi0pMQ=WWRj7(531LAoJ(O%dj`ILqNRk7cviYQSyf@9%<00Z* zKV$x(PWQv4Ic^zuo*t*XTVJZS!`&|(O4W!3EKj9sykJ1x1>9v-%Xna7$5QnI=vc?L ziYt}p2HUDE!GO9L_$=&K0blGGQ1<~hI|21H5p=i9wVoVL?*cs#G~+edpdKd$)P+Va za)q|<2+VQ!=dZ1Xz@G1=|1vn);5P#`e>&)4c<;L$crWBu09&}Wy35EtBN$Mx0ZZM0 z`UY4I3|*yUcLktcxc%H#! zz{3w{ST0+*dR#$d`6iYx)yQ!J>F$O;)ZozuPZBIuk?a3i&vMvP&ohCnhYNv>&wU2p z0y14ZeYKvYYWgyi?*mHJ0^n}AV|z2O%=4#IJrDjc(0R*|9>ClibUOYUSd4E6%YY?7 z&)s^^biW9CdDZiccwZ1c-nVYj`VRy$ zUXy_Ar!N4qzq|?fI{bag*n8#VBhV}_>Smp9MFy)49%s-iUuT0p2k}`9OaRvdSzfjS zF9jXFh2;kE0KS9p1{$0UWc_Pg-gG(h%AKAEr~boMvA&^R0uQSQsB?fX2imGRz+q)= zRp&$X`*Gq{rDnr^F>qc*jyiZZ_K9Dl+ZlDSZfEj=eD5j)=KY2C4LBG`xdlLVal`U> zUMIA}ZLlU0cvS%r%XzXmztcEO}Q z`>`T3{v~q!OXT>M$nkSglbXa1xZ7pbB>ogcy4}NhfaE+vK4^abY7b;O9}CQ=E>$Ce z`M?Q4zW>cN`0Bk_sn@Mky$vkw=Dj~A_2T>CpmN>55Hs)7bW?-uU&${qGg?$lZ=~KhGfd6p~(Qkb4$M-(&DGgBuOLZty*WoUf+*SBB<1H0j?A z&G~53(fc)WUYm4lL-YNKbQeSO{fYF!hUV^X(t`}m_bk$EcZqxtBc3Yu$#I@;pOWd! z{C}w1(8QULBc5gOT*0ntHgH3?u4)1BdEjQ?56HK(A7J?{RrP{N|2U66p}U?}Cq4;# z;%32`#8%+c?)csY4iuL$T*)vByXk)HxQNE17A_opltbCN|RFinn;4=od8r&n8qY59>;dC=N z7|8EjqYX|4a(wX;@Q6b+4nCw>eGU570CrhDPVA~W8SDm}b_m*a;JJ{02*~pD8gK>p z{2sOL8Z+*^rc||m0`qQ$Z!OW|P-}@dKcm0D*7Vim-tm2F60bp?@%qhR$&;Es%HSk} z7Z_Y&@F9b*8~oZ}g4t=c|aEuOjmM@RR|Ly5(i1t{d*CbAb4c>*I4TvivzJ=Rf>@f&Ie3#iuxm ze9ASZ6ECqm{+<6K{G~ryKA@(3gZI>l_#O)6{NWdZj%vAu^O%m>4Vu^vG~GpZ7(IZP zms2ebwl~-n*kq!k1^^4;@Bixm7m%;%>!_c^y>`d>md1MB`mGN4Ucvt^SM;5px1k>Y z{HvHB1#a1?@o?k=))lA^K@)cYnGb&&w13dF_TN$Ip#NJq=lvhTX$Sw<&+RLm z*=PN8ek}h#gj0cVZi0L_6W$R9Pck?T$oS7NG|Sz8i|5Y&L-+~!%lz`pZ`mI3(o%U`S&&aVgCIHWO#o7S)W5cYCgkZc$uJEoShrE9GDZ&RlR<~x`pYv zft`CX?{j%>pi*(JAUDv@V6U`*dKT^PKb8CO)Bdhs`8NBtqW9Vx^9}9ZBrVH-{eL?^?4Qg6F1bPH!L+~Pqzj^9WL+2R! zY0#r!j~80}%~r1n9aMRE`yu@e=&=}G9xe1d^(*LDAfg^O_72|qrw7v1MnmU;o*772 zAEekP0-2bJqkmTx?rj7Af?2Ac(DNeWA%A5cOC2Nh?8w=muK|66wwL%^6KJC52z_BB zj#>3ju%`Gj<9-h4FF`Ld^i`mDfL>3USk3g>4Wax|{M8nEen+@F_blA#MZyWj`(3zmO8M+2^p4Ci!Y3MUS7lY>N zH0I~|pi8ZMwcF71LF0gC)$0J-Z;DJ9p6L*EJeLqLx)^m@=ofL>zg zji8SP-Ly=H_X_BNpxYYyUC<|ht`K^T`V904t56*;^o5fCBLYS0Vxec_i!r`NTScl@ zIsKcBFUMHzXBDeY4gH6qX$$>BTz&Cn0I%Bew<*L`7^RT+Xs*III)&!yj4M;*xjJJ? zial3p%t)cRT4N6AA0+%|>^jg4?>C|6sEdt#>q>?=N38-)|EG1*^g7V=e@SOeZw5{M zp6sIOPe4<@8C^B~8)$~Vq>A)x)ug!&@91jM^Hh7#BjEp~LSLxLKre*+;uQL7tGSxh zO}noa`Ic&hp$Ch6OZA)37phalzLh$)yOyst^m#%rQs;wSZnaVy4Sj{sC2EI}Uk>^f ztF@}`LHFAO_lx^d)ko-!fmcB9z+2^Dp*IC|`_M*>7kXY~b4$jrjfxq1C+HoZXBaxC z746%qgrUno?*M&?p>=!JPF-ne-Cng*OEoR!Yoy&?txBO!#nj5ZDfF3kNA+b2U2B)g z34Bcd0SNDCt5O}@lkwZ6bor@NM;cm}pGtL{p>_GIR3{l)m%mCi%Fw!eRjP4@*5#}6 z|KsYu1A93C2Y^3!_dIv^ks%^mVunNnF=|(-sMw=ch#f>lYqdpYJhLQ1juFA$MAA~QF z$n~$vBJ1Juar;$eZIn}3SG9d0USGyj*g$f01N10zT0`_ia6FWEnfw`eqEVIIC(j3` z8P%BG2-C~=`lo?o8>5#(JVUF_#*^2At$pPTS5chf;%airZ2A3n3h4?CP z9dcFhIs@*umEG+{ZFWF8T^%pe40Uoqfq7o6tSs*h_7lc!7kCr+XR;r-7yKl7ja&vC ztJh(Fl52uj8FknLW%u>2E_;q~wglqGjk>H(GX{ToHZHF|tFN4|Er9 zQAn~q!SAiVVR*B*}Azq3%W7Wuqz-7U8$v>%hEPIRm ztBS|6IJ7FS5^v7lQ+BUk3-&&xuTox?--3Nat_>~=ov{$abZw0x%TC&;X^58<5UwMjM6CA6zV*4oG z06d(xV%6eg{#3gqI1b_+l+$f&uUoOBuzl>vzEXDgKRUA0WbA)* zVsEyR^-p2g|L7zEe|ZA?znxes6?eC9omeOG3aDSa)`=yMw~z;t50F0~pCOMSUjgUv zPHZyyv5LRTW{`_PKRAcK%jP+}pLb?U$e|FA*SfNAl+&5)k00h;*>;Cd@NVq5a;l1- z_ z=Bhr4tSq?;_$E(eN#yrb`hjeE2bn%sllf=sgV;>+c$I%Jn@yfZof#;Y_-F8crx4M z@B==K?R2<^zt0Xh{DObLesowD!`WGf3$+pKH-{}TlHGFHQ;cHw9DbyYX8$-`LVU;! zb;#yvviSS^R^ici>^4oB(ZS%Slj#RT?= z!*OCFTjX#jF^TPTI6-{ME;>9&q_8Ir4;PbJ(7U)l<@$^hsVvFiG?B)3I6PZSVRq-& z=@*K0*4^P1Vk%qZ@Om+g~MjY z&E9wTuK1iSAY1UOUk;zcmXZCGGuRqscmH}W+pG-t)2e?xm*pyFGPyk-icHqChpb-) z3y1tKMHU;coW`1g=j#hu$DT5t$~uDk>Wf$pa(}hFFWCp=@!)uEF&jai1-8t^Y$`b$ zJX>GNvdCLh{$*?v`A3yMo9$F~KVQgZd1UObXS1_t)jswxma`&{sO!78fDgdzc%6+zA}7t%HBc`lqly;K#-~=A#V9txCV1tx?WX`|qy! zmgST2dbNQ)A>;LG1G9SL_K^EKhi_m}4zDscvZfB-;hWenhad3GEY0B}{vF%u@C&|$ z9dlS0TiF$d3$<dny-Bb+|)esDt;2&&OFXm^p*e0(|!hbF;B2nXxDXcfp&teA>So` zqwMaVoM2lq&Tx4r*kxsCPa|P;k9nFk>c`+O4@TI@<^RND`b(#<$`GGpo@2X|^BC6W zJo{VO-M_!Uo>Lslzrbn_aF%z8O(0|b-`MBM?)<;A1r*2pzq6J9$$w2227h^?F4Sj% zna>LUQ{FB15^dx97cebRrgyJ@0rOPOqxCOfo5;Anw^^%!s(f0%yDUN3UB7!Qk>Xgt zdu-YuOpo~=FrUHF8LTtZZ<+aoeVT;s4PIkDWnG70dR+g1Sdy~4{AXDKyvn=x*SA)6z;S zyX#|XG78(+^hks4IdpWGELEmD=|-rmKufDdE|84Q>2rFA6Z z@{4Op%I@ROM|(iV?FBzu4ww1e_4C(kWq0}hS}`(ik08xYIfWg8`Zl&gwQTYk;mqQC>T(>|VbLTJ}h+AFf{|cx*52u1}Qar|eE2rOhN``l{NF z51r|2X#14i>1$|XK5~{{TTA>HjoZJTwoci-y!zT!isSKEU%R24!Y;%59kv>2h2$IH zpRC4O+89}0iaP%;SxvMT%I^K$Op6(d@jH;dvDHGmOnwQ@x8gK8YW(&7X{DV~cGsu1 zb^&eIg6F6OT5C;?E|>Sa&B2A>0&+JMZ=>BKzpvtLw5MpgpKh!9eS*uw^=qr$AmjGz zpnW<)#xvLy$gkU-wKd8qEDP*ychxRV#QeDZx@pTO{YJQy)$Y<=dqHt5KVFNRgz2&T z1Z@Wy^Y_(`DZAIV->dVjY&1MSuwT0>I8J}CcyJX*T%OO){PKLx;jhXQ zNszvV-T&3{M}y<^0k1p-+yH#WQQt210PU)Bz6;}t+8<=Bf1)Pe(tthf!uls_o}Z$z z{)t*`(XTvTrT^$ZPPWIm?X?QxGwn~bxD;7IJf4<- zyDR5wxIW{xp=4a23ED(5uFpg*gN*AlNn1(A_4!o$o{a00q8%sW`lM-B$hbb~+5?Bv z?5UbPS=KLK!}a-0i*Y#Fo}qO|yKsGGYcjR$AN&sMx6*#?d*E;E&$Y2CJ+ALIdyY1f z%ER;-ntWSEE)Ubsb(iNATumO|nXg>&|G6eOhrf=$rQ-8mrEjO=^Rz>bY~Ao^M}h)s^#Hc)oq1 zH6r8r_J#Hq8PB&bw0FpOetn^}B;)z@h1Q0Q=hqindorG1Uua#?bbc+;dQlwDuP?Q} z%Bgk^Y@f6Cms*l?ihUe>2|Pj>*XNSGSWChDHr9WMHbps~w%-zME*ZDq5^Wh7x8D-& zTQY9HrP?ksZoj445#39GA{pbaK3V$joT+%3rUmPKhMVPk*zgS&Q#Z@ zr*^jX3&t5TsI9QTv&U z=jUdv(BWizi{_h-$0wej+qK%td9*#YYXg;2>~^sJrCi@@Bb9Oe%Yi?^^y>G4IDLmU zjf}_F4lRp}+kdC_y)u?p&9zg@RmSpagHKR;JYIKcm&jP&F0Fu!jo!ffI`TsKrjlxK9nn1{FJ@Z6cRdKBXO*f$f?T0P(b9ziEpz(en4;dBv`4ZRVqgL40Mg0xdQRod#Z4><^7E zKxct>6}zJ)kk^BAi`~;=zrgqb@c)Yat+iQ%mgn!4Vvn`;o3WRRb1%i5?Ow_{k4h_eZF1|{vc9(7gWMBb2u>moRdJU-n>D-RF-F}VQT0nC@m^>N?td+MGJ=WtKGlybU#=M7muFTDa8CQ^X6EISIyOY-p1dy*T2M}Y^RSt@vvM+tqn!|5Kr z`e}zVJ^b~{4lnWu&}%P~>zAeSuk;AgV;x@W5v+G~c!NiX-rM1=9;NhQ4)62`)yF%$ z*CR}y;qXC^()uEYk9d^P*D7bQ)lmNv9%Xg;mW#VSXFba4haLXeqr84qIaAg5H;)Rs z$d>6d*bc~F;1QuWQ^xgq;1R7SC}a8}kE;4ac^4wvy7rPuo!^ACXhQC=VE2@cos`dH6& zxVhI@eV@bay~gP;$>Sh@AFm0zy&B7t9_TempGlq#e&1`devG^VJl1Q9e%9enz0&pP z4o~-*rdL^m{?kL_jrdT`Y7deyAq6RYOF8OKS8VOV~EERJzF`G z)r0tBuci78M?79zrWgJ{KXf>UFVkN*9Is{TVx3$*wvRbHTlaSOrPp#j$YJ6Am0n&s zlga1V#l2VQwJ~l_f%+6^YxG9sOmHE%IeEE?uhrXmhpy(^lo|LgSR|L4(^zEXX7 ztJiy-KAzkdTpc`(+!b8M`x|`&c`&#UI0sGTuh(-OuI{~F|DVG-{9FC9!}3c9@cAD2 zOJ!@Jyw2Vm^%2UMY%{p0_a^;Q@?LO%@6Gx}@)7Vb@9*?U>(%zPvHjkrPbFjfy-lA( z?$`kOQ{LP4?c~AWMc`cW1n_e2@AW^)S>V;+BJxJ?n;tv#(%<6pj)I$kqsiC78@zYw zoyaf2Tfu$F!3|~mzDrLhR|9td&m&|1Vz<7FjQxw<`Vn$7NFS@`=y%9%!K;iM{W-ZC zxQ_Q8z5E8OUm~~>IEFj|9H;Nq>yamebNF68mW=(AAN2Rg*gyF}A4A6e$v%B48T%*u zbonh;+26wc&wgFLEi8@wpZ)q3G#wuY^a6)-_yPS1rN{o?LH%E4xF3T0tuhYk_C_oZ z`-8ckymSH|=6g7;~CoWobV&**a;zU_TZKdtQUAOEahbU26qtY3BbrPn3>w!^~v zvi?XJmsjNdoBprETJbBo-zK?zFz#9Wx*n;V=NkMb+#eLbrS~O|P%hBtlP7|=7ym*D|sLIbn)BzP4a2*dGH-F9`A+vV=^A^g}U!%S>HU@ z6-fVU@xSyC@-y&ta2;|$V|ZJ?_#M45`3>+ra1Sz`k9YO{WIP}5>J!PGA^nr$_w;n~ z``{Pg6=b{~+}GEU@p^Dy&m-gY;BWmT8LtO_>wl8*e1D+-O~&*6f$sesuHQ6R9`|{u z2avPDE^tlq4sdawM|xZGVX!~A3;8m*6nHTCKDfNkWBmj23veWO3>nAQJ<*qvaeUnq zeLWe+*A?k!$T+^PNWVhH@pVsia|_lV$Jag8{mA%!z(0BeGQJ=1j~++H_XD2k@00QU zfM@!6GLE-)IDYSiex8iu_g?5X$T%MFr7qw4md6i{$9pM<3@GF8 zW&i2{Wcl@yW4ZP z-!&q(NoT3{y1I{U#5nv0xC6N--|{pzIo!?1%lN_Jem=#G3l0zQ@iA^FA2ilN{vkfT zM&fQrC5%HeT70mej!(|m%B*$#j16KX70K4_eQ{NsE|8~@uY%S&Z9z}t(L zGwzU|g0pe&C2xKkeh&jDlks|1#h6RR>sb{en~c}XXd{n|*UM<*EE%ttRgHhhc)hG@*!vm$ zrQ3MDsb*9o4GM?Xcj7A4=`{4DluF;>2*T=fXa57#W>ls;Oygt@5R+91hSl>8C#_MB! z<02Waj}45MWV}8$Fgy?9^6~oD(5Okq>t92o2^p`Sjf_ELynZ$^Mw9XS_@=RljMv9E zjWuMv{xvpslJWZ2*vKX0_3bU=PcmNL-ZF}m-S#yi)8 z-yciF8J!)@DACebeHi0)ApL?8t&Lpr+sbVX&m%IP$Nq)udx6&8h#=$pGwqG)WPE?7 zy-}Bp@6WV1-Xi1sGwqEQtfs>|D)1(F}9q;xM+^?(`0{eA*3&R9^+NO>q~Ssa>(^n`ff&tix_W3PPmNj zN*?_idH{HHiEhSO^83o&jqu+wJ{!EcM7(i~yh!EmVLTwOBnMo<^c%?a$$Q9&bbBtOzpo`2QRL;|N8noI zP2d8pm(h^C7hDLAMXU4mSc%@o9A)?T)jq}&GL9eZW9%d2c+)<{CGvrAxqbQ=56L*5 zwT}^fUDnS%{MN(P<51stEzuaQoXf^n zL?0#N`1(ZSB6%^zZ&ChhkpHI=iAIsKd;IDkqwY<)ygY{ER|gyI$T)s=urZK~<8cQY zW63z4HOW}4oWdSK`TO}0;v-rjiTFpRf1Jo2$VvV0hCZ&Y(Q zK@2wrJFJTl#&m}ViIK)ZhYPh)#xD+AVzg1{u&4OYc;WCP?IXkg*6Zb$5FZ)V&ZGCo(v99^e4jYo7)r+H1?k2ZGM=C5#uVj4HlCm9##D-b0qsj|eX22!ydK;b zyj&UI=PBnq)!0Fn@AE|ZPBR{$ZLc`^Di>INnjL;Wjv*hvgX`ZC+!W%q@1i?{Tl!8n zdMM-bgTs7=F$rxCf_N8mrZJT~0^GrOrm>DZ9^B1$ma$big-rz~fIaVF`Afh9d}kXA zmGc<3hqH|xWNbfY8yCsge$FDfY#(xe zZ-?c_Yf%0pw0vLaeW*`d5&B0}-_MO3ACR z4AX}w&oksKfO7d!;COAmQT8QTzSouDJKykR8vG-JH3yIN%`!sB3E)Y-3ym1%6gEJm z|H9Zx9s^GEU1Y>)GJgu20iNl**l0rjLV1bNfxHHs>ATdJqkL7{3@*^Jjjd?cFW^`` z+qg)!TcNkA?Ulji7QmMu2W1-v$j6kI8^_4{A2Pneh*8@wgEavEKIki>5qUiL$)J_S zb5*{(|F_Dpby@#(`w}cKPG4pCkpBkf@KuKV*1C)rYc1>ZwNZ{723}=+ZA6h{zy;cB z1HWUIZodsK1UIC3XBA&#G$Z#>@ij&p@_XQYzH5!n-3L_Q9_2A)Wk=W`)=9$K}Ze}fYZ+<(_0JuCUGk*?wy>}S|sw&w=pGqN{a zhgP@TXv`!x1t zj8p%6t0BKu4%=Hfhi^6RIQ-IUn^EMj@c!P=xlE7GE9;lsX_QpP=Yvg4<{0H2Zd39H zqq%Yxi)jmAX)1ZZ7(;HLe9%})eg~XXGS~Q-+z~vkzBpkESm>P{%CkQe5&MeqqZ&MnM{`dOUV;PcjYYBL)GV$G1lS2lBbPWn0-g4 z9{};fl0O-V4nHq>#z^wO{s_7r$Sqyn|M||L1sc&sXt0^}cwa@8ws^PlR}ZcG7*R`XKo)E|BkolOYb3k@XSs_o^*^w~VKlUyTQd)BiARUtAwK9wNu@4{2c^dElrjpq*k?f18_(C>Bp zrQZX?_J3{R|Ik?Ja7q71M&E$f@pAr;jUtDu`#&+}1ip?p^e-|ZgI>FZ|5Ib3!|nY4 zG3?;i@h<+)j4=);_&+xa93J5R!ss6II{kb8FO4G(kMRH3=v(S_e1bpYMGk-Fukksd zujBLmbsib^+ROb7zR%%r{W-5)`gMG}zu?CmKHzWi#4@krC;csc*5M2OHcu}5I)2^X z#o-l=SNr3xe=$DV;m7_S{D#A){5<)z@~_js@b}_H4)XwSE@!rP?_ZCA;ygV3wMz#0 z@J$Yf29)4Q6<^1r0(|*Jhie6t~h`YR|0e-wtIfF&O@zg57pVxyKnPq!a8~koS z0AHk>Ww!+P3kc*Z98L-d;_Dn95fIF`I6NjGgzs}WEua)X>hO$!P=4Ow1p#6Fy2D=u zl;*b`UKdb?7dgBmpez@WxIVIec>(3Puft~p%JVV~UkRwdBOSgK5YB5jd?%nHZ{YBw zfJ(fD!&+bjZ|`uiz(}6pa6n*XKE&bjfl+*f!&L&S@QDuB4UFb99Bvj^l`nL-ePA^% zXDFBZORitf!0P;4hx-S{@NEtc39P~QI6OSCCeL&DzB@C{9a&FKHTA_fp7C2%2})y#Eqa>o>WzBf7S>*B(OQpCBLoW z@9^WwsjLOqBd7&0bl5j2j+@nRdtm>)6%R*K|GgD&L&pAlD?U;=oxKa?1qHR@a;9-v zU+FSIt@#ylA8ysC-qMqTG>}CGP<@&^z%+<#hH7 zxQkyW9;58;?|0(2Vq|&wt~DLuD_=pKIIDr)q5LinR!+C&ya6MEI>SWds=oHm%3XMC zN?)!MwAVphc_O*4ayL32a=ki$_xX0`6I2}gr}0{MKF#5Fe%<*EG#dr!w*njB7Bgoi)=*4TJRevGVuNQAh#{NPtp8JN{9!&O^M?w6maw;naOB6Eh#Jedn5S(WthJM(kJ_k;$xK4*+uYOF`B1Q{3`fL(1)BilI5kc zzrYjx#_&?ga6JIu3L48RkUcxg{9}1dav(Tf8^;?_{&L{Md>mg-uCDwEzuXwhe+wL| zkLNLONnh1EfD41h^Lpg3!4HBa@C5R0@W!Btd?2}g7r8wr@!{kt;8jKnAB%RK1OE^- znNKE%c9rQ<`AkYb0G#YMh0iB{1CH0y`4aLoa8JK<{x!K{H~76jcq-q7c6|jd&_3f^ zC@#9o^q=t@#-n2>eFyMeF^4xH4+pO@GI&c$KNnm#crNcm-U_Y}oXPuB z`t#t6LGyXCa=z<1I96Z4$5MK;hg{wQKAzkf+yLTBDSsNcQSbtuP2Q>E3wc;mwSKNY zRsMy%EV*(|S>8fkfjo#@39ao0za6}gS0(=qZXLXc*QWGk5@i0xye`EPz>R_z^ZH~t zk3+n+gg2q|r@@_qm+)rfz+Q}X2fss302e^|mgGI;He}D<7;mqfudVI}&!ZrJck%}C z#-L?V|9M-Bq;?c{xw59-)|+QkPeyZ7HN{(*A3E$0V|(|7TY z$#Q3)4T&vJNI@NT}{;r+ome4oQdg7@;%4nvd|DZBUgeqN=y z++GKD+}{UyZDsfVI=~mAX@BMNvt-;~hj@v1Fh8#EVIHZB$IHp!!+eu69^bcukMLaO zd`<3;BY{WxPs;B8=u!SN#?}7!_dCk(E9bG*{p9uU7%$mEE-#PC^CwpSk(X6=pD#c1 z8p`hN{UdLrobL+j56|<0f8?XdHI$F@_2iGhR>%o{gFHj|BoB_0%X6Qfr+Bo(-XW)W z6Nl#opXMzczAJv>iOTNneTL5_V}Id)d<_}f=kq+SrCeSr`wEutA99g@LEf$WGheOj z-d~saMrHT$a*2PZoX+I)zR-|Md>>iPo?i)kmwXn=%k=wμoCC+*)~cp@41?`6JT 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%0A+2i15Uk#;YMT14E{@Xh3WJA6JpSduQb~BZ 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 v9PT#00Z`N9s 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 literal 0 HcmV?d00001 diff --git a/dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.xml b/dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.xml new file mode 100644 index 00000000000..4718b16d691 --- /dev/null +++ b/dep/Newtonsoft.Json.6.0.1/lib/net45/Newtonsoft.Json.xml @@ -0,0 +1,8472 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/lib/netcore45/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/netcore45/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..2e538bdf1f794f2db89d8159838b4fb56ddc5c95 GIT binary patch literal 440320 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 + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..b819428456fceffcbc5f5acc8783d65ef57a4f9f GIT binary patch literal 374784 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%0AO zWYEr&f|ewMc9|5kYcgo*q@ZQVpxq_~?Vb$UV^YxaWYC_Ig7!)V?L8@IpJWhcREg@{ zS6pk{(V|Rt=-3mJxvwO~)vl-yf&cGb$bhuET?BwPxa44DOgec3YHk8b;%@J;RfvbQJl~p^}j+Y(}^qA?dIP`otulw+YbICVQ~@HJhw=qbDXotrjRzn*KJt z(djFkThV>;MJNyhOCKLw|0bsAx`QL5h6B+8S9$8N<(*Sy&6lrq1mTy6%{5DI%m?}` z6MLTDbOPr(?*{ID0%sq2&A8#0B`J5^TOh{hNf1|4rhm5}dYD<6ngG37*&sXv zABE%nk106=kja@SSxu;!+h5uK?`JemB8OSiwB+F=cJI7V@*EpKwEEa*({wE|I6hli zAi7QRA?E`f#2e9gCvt8;-qFYqMBkB^@DWnF*;uFHg9dNTyfwk|oAy0H*_AjBXZEOA z3r|uc7g4@xqEyI@ZYLqx##PEN-L7rQOa}3T=7}z|ohtY_9tQjg&%;cW*oCyJ6(SF= z15)R-?ck?7mm?z$VST zM{PghHN0QaRhF&RX?QXP>~q)eMFZ04nM??i8V`fK?}D>>sa~`8Z!+5GHj0n&eo`jQ z3(lIg6^Qs4Zw2WIcc$_6x#=M)edJEcIC2-Cjna7NWHYZudt-COIWay5qrb-;6{k+w zwS5_K`l7`~2~z+Q9G)WGN*K?goC|?Bqianq@3nY)!aYdU9l4tn$L0wL^&o2*Rs+uI z)W@`ona$;G)bJiaSk>3o$`C(_;)UFQ%%lBKbsX^|ly}i*88x*#B)nIHx@}MoFGhu5 zAwF}zBociUd+#gkp$D6-&)4voZ|p&IFAmAG&5-B;Je2%!He49tFs6>?KH!=wy{!N5 z$A;RjqX{f7VmN$V(4l{YyrRbByku`{fnnfTu<;-FhrmXMWQNgEY?KG^3Dn7+x z^bm3Fy3D|HW*Woy6ZUW6mA7c{5Bw+aFpgsUA}IE6@sBs)5kvU*@MksPnH&B+{Kf|S z;CA7uT&=-5KuArig8|!ca89igwS;(4DH+t8bkHP?NVAiUH;Y5sE#-94ZWq<_r6L_> z@_^_EY+knuBmC|lg6x}f=569JFpzG!d*?crk(T^14Uz%6UWF1QyI#Mz-BB@2*Q<)h zsC-S=Gj=bMEl~6&L85_Xe-wQx;qiHa_(HcC`D z?OrHG1K_0ufZAb)Oal0M0zmCvC`JRrj}riD_d+pvK|||4+EfoW)=)g^q2FtSs?~(n z>+nbQU@ua;7mCqH{pAFJ+PzSW1^^rEdJU-E3&m&v{4fEab}tm80q{Qw0JWnobrQhO z5&&xVLNOW`ewqMKJ7?%sGYZ1CIS2+0ibp-6r+&@yqJ11)$WC2GytAU0I1yy z#b^NhEdii*FBGEz@O%P5?OrHG1K{-pfZDxKj0V8p698)WLNV%{;j8s|wnpgJ z8lh?p<=a4hZ#~$H)b531)REs;50BIu%C`~y{(7)y4^2by;;9!yLM-3OjHQ?fWkBMd zeoq~RIaCY9qn`d(8lh?p<=aUA>3Xmisoe|3XaGEu08qOZic!aZcRf5(Ybf8ociB;R zS0hxc2*8yOxcL1nAjXyp4YiAwqgompwmtDTvd}xF9A}jEg~$7jC$Xe3dIkOBf~ML% zyWspYYl97Gac+=Mx6Qr$6Y0|G zHZSO2;HQfVe}=9htXVf0lc;?LzDPXDbTNETR&Y!R>dJ&%QsgAF`<)6Lr?xvBZ;1?6 z6CE+Q?u%Kbr^Y04P9}K5No-j*gu~h4%Riwf6eiN(FYs$AFJ*r+gh=ghZV|$=t5K?n zBbfWx4C|9@G+f7)6P=nHBaYJQwd0=X!0hVBre`;Fa-)sfr_T=Xep8w zkzMPzWudvR8-9c0hY!i;VLk{edVcN0w19rXZ;Ic&@m^r$TR6wQ&Byge9ufO@#GW2| zRE$=C>@iHutLMP3bI#QDq`-STJoY$dby0iD*LT}C7tdh_7JYy> z1&c-wBM|u@NkrZld%_@a49Mo<9!Ug}v?4I*Cn3-r_|cPqSZrSOT^#IkMs1j6PMne! zJAX-vT|8Ilqo=TnL_hLEvLD!;a`8||0kx^MAJzM@r!t@41C$4pGtnk2oC-uwW7>Cg zev{PvNFB*JkLz?hJwrwp&jv|v}9MS7Z94W(KCdU zhPr}mF?trOzIJO8_cJXMZ3WKfL=>fvW_$asPIk5Ej}E^NWcWVG{@dwLVGWxor9nG} zR0&l{T^c>XXOTbTG&M$>E47+k98(83k{WHUOwF1a_2K&d0H3N~YMLloHRmrU)tnbq z8H}mhvNLPBsar{FF?E4JcALBa+*s~Y5YUYBz%V+YKLc373qsfg~n5b^I-CsbLRHPc+H!Alks+2 zygtH_ru17N{@Ip@W4!YQ3|`@H>`eJTKz>IqMH^Ax<%K`h^b|cuR*kjVohe4$6u&vU zzL^eF&1F^fM^oil<>6&$6yc`uf7SId$0Qhh6@37esa!)S1lMy!LiP~78e zN`o)5fAE|k%6ATVb45&Ro|n0*Im7HxT0NBI2t!KMXHCsfUd5~c82o{j&2!#F{0~X| z@H*1qa1Z5wQa6aL^YsT`LrQBz2IWt*bQycREg8zh6cW8%7u%8Qt?#0b%US9=v5axO zPc)8>JuhZ`e_sbDL?LeCeFGqfr=}OZpz%f}njw4U7N^YU3J4oR%xIzk7Zs$m*KdjG zXAKC8sa@c%uyAla1rfCG#RMP}LV&hR?WG2Yw(M2_KTiM@1q1ZRRe8sCI)69g@t{det=5zF&`Ifkm51 zzVDGb)+Lw3SbdW@gVRqS?UWc>7A{%aQw3nnmIe4V1(;ut*HrsxJ*7A+Iz$>-X#i|D zD?O4DZ#S%)0bk3Hej|01FUljR|BV&Z;Ae`dkHdC`Z>E*zn-Cc-Qoa52YOj+GowVIe z(h537seDxJFu30%r<1}4>Sw(K@@8rO>;#zT&Z>4KJdVOcm;og@QqV5Kk%E}EcL-ze zG*&OirH>Y|0praMP^Gb1$!~WHc5}txO|wbJj#J!67g*4~k943q8m=SJEGs^dop_ z`RI4VVHE7UiD6~tbXR9%qH9ftzXw1L9EPQN3{RD|wQt6q#jSp;nU6Q)Jf3s=Ujs&Z zY2mFo++Qk;tl`>y6U@O)6s-2COPy2e56a;AJv@0)X1Zpie{KwRUmc7h#$dS^Y|HnR zB_q6Ge7M~2e@${M^)32#mk51e74R(R>>j~XY}VI`WsRWKl=p)n*M<4NfdYi`IAe7W z-xGAmJ{4ElE=GAD4fTXTXW6iDCQt9+TAQfogX1pe;MJM_COOA8PdOG` zJscnTAgNp=-ayS3$_|vQ;$o3S^gsN21=4%dI>eU1)%tkaFk{N{Y}+6nihAR zgce8sAo=n)Rq7!H6B2%#oL?l~gi4Ag`DPn>E}87xG&hdrn`N5CS_=QDSk3d8ZRpgN z@j|W2Gnv(Cwck?VW&y2h=h|_X#UrpbhE;>C^rWGDBu|?`!jvbQmUZ5D$lj__ej+6*5k# z_F!B*kB1bdUd}@bEN(6biG3kMw;?irts>2;q!~U8%6u?=^@=HYQ7nfQ_WzSvF{^bM zr>=7;NGx_Bt+=DMkaE6e?xImD~BapxKjkL_*BXLC#K3^#ermAAOrE6WR4GvWr* zxpHn1Fy(xD<(eG(OYW4fTr^uYqLt#-VCGGn!C!UtaWZwNb=@BHx20G1l8uc+E+Ofa z#~!NpBwT&p{6fv!+Qa_C%pJIOs^$FJ^Z{#fYfbhJ_z$ypn9bgox$&Al0D`K2Hj4)w zi%gZ&pXWRPv;QLUIPzy2J0ENk)`X6buIMlL1e=z|L#Eq$oD@U!SdX1zh-ubiG=`XN zJ$8v9W>}9iV~Cm7gQd0^nB|=H8H+*6dFun2voKB8hsCAIY`NL`^wwcotdDRUv_R!n z>$9v5GsXIh*J0YM&!Rd^!TOw5hiSJygLRk=>$A2F(`kK%>M&ES546|jr)Yf^*I`Q5 zXMG(eZUvUww(M~;2;DX1irWEFYhmJssMF+f+!7Ev3llfRygHt^Ex>GH$~HfBs$K52 zKD*XoW?7#);VsX$KD*Un=2)LP*)GqwK0>=qDR!_vbrM|;jn76|NsRneY0=0xAR^7# zO+pnlTJ&{1*k(T{M)Ws;G78g@+X5z6QkYxC}Ey3+t|lof5~=HL-pf8>AY=_7yVvr#5&S*CBa=GkH*Ofx1Pu0N*k zqfK~(_Dk4#;-%K3*tV^|lUZ2y0BqdE8h#)AvLliBQ&MX1>Z3-&DRJTK>3tTYG~dWG zuN=dV?Vi&Hy}6Oa|MI=2aOc9)w@zf*nW4hy^ESPm1#EZ)S=e|LSZZ@vHt5R%8$Tk> z{<`yOaq{Sw4ZTL3``4Wx73bk~C#nMc+WYEGbOrde^Xtx!i}TXD^AqB{rtZ8>oS&*Y zuNUX-b>|J@JnQf{8#jvcoAuC7it~xO^Cofrpziz>&b~j=3Rhr(g$Fk;KX#?qi{W!r zaCN3TE;%nB8onUTDek!BJp7S3;`NQxAt$5y$6ewx&l8BB0-+D0v3(Yg-9ALP>y1kt z4ww54x^;L+Ee^Y9o-dJ}7qmwbLtG2rZp?D?!UKSl>a9oI1rMoUB3@9BIG>2(S~$a) zCSijle4S3X*%fYYvF~7aN-F%Zq$Q7&`~-`36xk;Q>{D2OawlS?d*+38)LfAlN4aak zF@%gua}Af5nL?n!W#zcE7@4`K9)sJH;wbOBfctbS$E6ADF}P2%a$H)G7#G)L(Bs8X z-gS^(?#){{E)6?;D6r)LlhP@?dUy$*#e9YH0ckRCrFq6;;cCQb1{Y+?xrHpKM+K;y zUy~VDaA8z}uQWWb`A}Yykmg+oDhc-!=U1=J$Pmf8tl5Pa!@cZyCvbkNTg)W6|au&hHF~f1TxQy!&r|IqQb(#?MKEwpbeejyes8W!>-|u6utT@4mtCe<2HO z8~F+!(^Gv1mq>f&gB9_{ubFg<{8&gkm3eOX5(J~o;bnvH=f*aDiUU{VpCBoQoB39n zYA-`#?I9Qa#C3Ke?xo-b?prX(!7d$LwwJPrmYsH`%i`!75gdKEPLxeQj1XQ$sXUOzDzpMUr8Nd)>kAG zvyp`SFR_T+P>+T2`g1l3xB=nI32>8VnBtmecU-!_>Ry@O*B%Zh4S#78a0K1(hosb>7IsIUyuqN;7>3ME7&6mf$h3eVv>rpL zxkoK%1R=v~Lmy|8*R}ixvH^(DGEsVm=8(7xv=Bm`oyu)))MIisDqnLE1D9}!d3Hi3(d=j;w_sgd5}nkU{hszJx6WrZHeM&%tCuXV=idZ!O_v)-o90i z(i}v-NO!tOR^wDO>rUT+hoOJ2d6#O@39fyVYQfNax3`^@;l|eITLzI)|tMhzA|JBju2Hd<1|45?DcnL@CEhY!uCWY={-XnBrpVtJEbmW-V zJQJ`ZsmL5yS?C67?Gjs*Eu&?tr;>A37^uAFIx}DS&X0*LvPb0(#SM!TwI0&Ks$D`_C8U%LX|o{( z3F)eb;E;aZyYcFeI&0r~f((G_PBYLB-ooMcYATtP`QhSQ&cCzzDwsQl%L9@^=dc`; zYaS7~C=Ih{4~F|TAb;eghXuO4aQNx#BzBvdo+n~Z{lBE|`3@ooy3TVwk&#M~0il^p zw|=?5;+8Ad;nR&z*uw`Z5SYU0YBt@Eheo5Az)g$cxc;6=z=^_l>F0-%)-{cOzDuK@ z`_&vBoP7cZ>{uS5BV)i8%8#(%%Xe+B+c(v_z3ji91OG?CZzp`#63#bH=z9#`!%t|+ z^xn?(ro)>vS+%TT)6@F}R^W%X;nK}}hP-YF zQnr_+j!d1BZhU;zQ_GILULsyoB20WT6 ziQH=8ipGrg1VYc;LpV|u3mcUM^sg3_E6kEFd#o=gtBA@aym|>0fu%U1SrVI;6n?=$ znDS?Fu^&rB6kPo|l<=Pe+2p;eNrCJR^0!F9+47MK)lzy&{kW8R%W~``<$#}837Ku{ z<(Mrwxx=On*C3I09es>Anj^sXTHtLp0>r&uo2YUZ@E=YFSHTqTq6so=g*;5IIcBzv zFi&D}_%AsTUooTk;%OkF9mKvxmXl~%{>QLh6bi7O;mIEAV~i(@`8^i%?m#zHmhs{y z7QLJuOIThindEqm6=zkZPU zxgd}&j?1Qg-!+ab)txPiIU)^bi&>F4TLM(Y(*pDxq_T&Q_0zM$t1-29v@sz%Zw8?e z)X-k}=4}K>Gv@@&`$Q~(pB*l+AxVEzPa;=AL;7)dMg|@i0tKVvi7I#|dT5)4Zo<|mw z!Hec1NFstuN~s`5I%ZAEN`K;vDP=;)L*azms~L`#3(~8tHw`YqN{wRjB*jvq)pwK4 zPra*lF|jP`VLEz#;DmFMvDY^Ed zFz=Fb#tx53r;pvpZh#fn!XzUdktJ{-4WA&rO>dE*_En;AW_vE)YA;4l60g5lJ3*$! zqX;#xBO4CN6lZf$q8WJ*5zA?E^@^xj)^f=?-yCjWytIt$PO?018SNovP}v^^YRko% z=FuO`(~;I38nBk)+JQN;?$XeU){>)4m}N<#awE5BvQLvDh@_nTU*h2aF2~|jTF3d@ zQ-t=<<9(Q5lq`(wNpd`%hEQyw;J0V&mC%d|$MQ10p@k4AtFOqFWTh7JA%Vu)X-nd!k?}L#@ zVRFGn;Be(5UK_|y9M)kpH`KmOTHWTgXVytYBL#I6%h3iFTwNA*qXD$$2nm-;W%(m- z2I~e@gcC&jVc$cv99g+o2Z`Oq$2*7JPG!$@qx}g+&$uV|$eio7FN+9P|FqhpS30M< zdegD?L#!baS>ALBRl5u0ZUCS0+gX7r9i2Fxj#H^fJii5Br1ar9Lo)aH%lgV#87$4z@B^UJK^-0&af_i8$6oZma*{LZWA zSG>mMlgw{Rr6Xr@%hc-1GWjE5u_DLFG3Tn}eo{VHJLS`jT<}bH^sSUnPTbxm=G$XI z|1t6AyiI*)^1!2k3Rj6qf%uyZGiq0);o(*2*nJ0S+(O1RxB;CB^O(ch%L?5GSiwO>DwG+o{kPBstWX$dk23Xlyp-q>+fQD zhwD)Bau%%{9VRJdDs4R9^>(byl;wD~9t)+5*+EXrSGjPT?(u<~l`c zY{_RRA0q0)?`cLQ?}%a&eJms|?^;pw_d+ z+AP+}8MSsb-&gBW^Mu+=HIJ%Q)m&X$rsgWm@*ql8ya;kR*~qC!$cX^0kqH(ZlL=OHF9D5- zsp)ck- (H}{|__zt?{ghG13j6&LUHi$vB3Ex6yddTrXzLf`xR(S#}HzNwcYUOgc z3Afz8q0d58`sEc8Vd=mh0iZZt89qipU3oBj9Ef7`05H#h?P88#gVh~UoH#ex1(Isk zlv9%~B3B{o9mR@Wl5BJd#Y(j7e-AM@;o z@uDt;kNI}YTO=>Nj^vLjGJs7_C!8ED>&EVCpb^T z3`XTU3FrIq7&)C!J)Z}=qi5i@I6I>a5?IgY=LF{{UV`&X%wSZ$lgd7Zhru~8vOD#> zG46Cb;UIrg>T^|v1y)2v&0*DIw+E}p ztKd5gtB9>&osLy`jEmhFSe=*tlE!zYSRcQ3m$i$%at?vfJ`#K7wEaqw80<}Pw%zjm zSB$e+oHy3q+LhDL7I7}$(DtV_>TDI~#z$@*=TM8dQ^e^!6#enTbHv%E&I{go`il3Y za2C{g%xCVr=fxJB?dp8xe1Fb&F2LE*SMEgW0_lXn6)q;l&95#Wh2;S@&PtVBua8Z) zvFfqq`yfyFh!H-_C>cR4BmW=5e{m8#+(VSUD}G~D{Er*_Vua(;dVdi7(l_CWI8O;* z!PB?6!{39AoArE$=Mco-+~u+Dwq4i2KwaGw9Gh934l5sKM&Nc^c%Ndlp)f- zRjU*cw_cai&5TjtF)(K3)^|YdBRuPB*)>}b=2O|yc@0;Ha6N6h9;RHXzs+6Gt|!%> zb=S|stS3Yc$CId z1>dp)=l0`Bgcpp0{y>GQtw?-70@zHr`M%mdL^F1^>cZWeuP+7v#ZoVqoWO*{Ev;}P zCCaNLIBULcH*+a0(52sGPJT+OgQ1MqxypA}^?7bF&?6#TNY3a1*DBZmlgnBy zm_nNJA;mzen8FVhFQyVx8^0m5j?$1fk=M^lnHv1X-9}Ugc47~4c;nPuj;IQPb5Nr2 zfLnAq+oSoF1(Th%CPJ#5xs#(w6 zKq=NXPNpB0i(#O;O#0O}lY36PhSCf`syU&EYra*)rCH^Qhi0_d%MNAy%&Jn$L`Qt1 zRCRDYqt77ZY+fgo;W$$U;mNL`4Dy$_eeKnL(kR21rA`}V$X-2(2HG-kCFXd8k}+cL zs5a_!8)Z_JYyG^1j5LX>jyeX3&lc3wcVk88M#s_)?DL{?b#!m?C7f+X(Xxz_mwhI;apER=ocO|e;#Y4!ac)c( zuU+M5O4qLH+vcb)7p zqVu%ARQp}DStcZR-5uh8zWCQ(1W`?}nM;T!oteZ(cmW#SNGIOH@GjZO($qz?Wz^n% zO`MJB0?=J@LXkP&@JTp{ly^OoIK0}#j2K?E_%)liyruvu*{&=zS@x70Wi|VGX7$}P zu~)uUljLLqHheH`-C*QGQr=K|AP!3chzk5f=^Ae{FLT;fIy3I19)zZ^CGjolb*sEm z#ga!(Z%kfi*u3)cO{0Q&1=1{+Yl9!%I;)ACn0l5y=^au>$=Z;{)7se8qyWi;+6K`@ zBx9tEjmks#co*X(6iXqvHGc_iOONYw<Y z<;eu&y%StP;m`Gb7}-cVpC69U3RNCY5Z~HorDCpozy{RM=-Kh-e!h1 z<&8NagJuJ0qAN(T;dN%+E4q?^k*oML1>+CLlgbAOANdHL8^ufg!w=KZ zqHFNui25M71s}!Ag|sPcwL3n z?x2dSxTNZ^dpxAEN{`&bw;lQ7rSVQMo!W=EPm zC8_gG(#|2|A8OC|I-M$!^B~z$Rd;1oi(NKTy0(qxkZ~5c)(-(;Wk*@(YSdJVB$t6= zMZAh>%haRLV`S0_!f&iBhm&KNjV-xybzn{|xjgFvGRv=06#4T?8!|t6srO9A?BvX% zUXvaCN;`-By--n3NEl0~lQet!44g&B`3mWImR=Nx4)m=0Q>DM-sIf7tsSirWzn)6k zC|>Fxva+m%?4m?GNqbIt*Umtv1fHn6od_)HOpj9Zp?(xspdTsf~vv`oq)}2OZ7i!@H6b3`?ktkr{wLEao)y>LQ5?` zC&*3sp{}DyxI55eEZKyf*nnfBPXVJ16GS&-9eh-@+j&QN1G0$pj;b?E-eszdyA@C^ ztwBTJ?%lS36@BWOu7MY;E>R6%WM9f5f7^*$^^Eq~xn4L-X?Tf9%`Fj{tMakzdlN+H ze(Gk4FkLtvms;t_7ST%oQ#=aULhjmpXNTX}krpa^lBL4In3M zVwSs3M%IsldjlTT!G!=z+AX=MLp)BONV~vBMwtAC>?J4c(Zg|Dy~8Z~U%1Tmwws9S znN@_Z%~qWqHxEl1e}Kl4{iLm6@iL7i<6$AS$J5;K?Z{CR)0PBh{4v4hmKR4=>X`}S zeUjhLf+U0?z^I3|x+?Skfb>`0Q0YEX6(r3>&PwU3N zgSTkq^5Img+6ULuQvl;f&SWjO2vd0*ibeHaarQHmL6-g^dY$p$ijSb4Cr^utCGf5j z$uhB~xw;~0z+lO^X^rC{b0uCDApEQY(J&a&CO#QzOF?m)7H*kaw7!>+VXM0fU1lSE-hro2T){!0T*8Xvrok>K$(ozPD&NZ&ym(h0Q%>R*6{mfsdNLkZx z?W>b{OlI7W^`owHWNt-80@GxE@MTdnqVmVG=QldUr;?{{NV!Hn4G3ZtvX>ZnJF(Hg ztz}QCe7~+4SQGK`WH0k@ELv`+YT!g(omGqedByS(*LkJ#`s=(dx7_@m@{}XPJ*lYc zyl!`9!qwyUBwW+nI$WI;z1JQ697Mv4ZsqHaexC2N@BwM_ZG`lg5Yxxxz>nMcJB z22u1?OxVy~_%#6%UXjRiu+VnCrEr1A$(S1Nx z-V`U4(uAt%Oou)Wd3y8!agZC;-M+Hs^`KI@r0ee>Mpcew)~`@ocV7>kH+oQ_V1C1z4_WhJYkt$3 z2g~3F?pxOVZEHSaOryw$@cBvvgg3>Uqkr7tWJaw{HKv)dLxf}KVj>jB*43x`sOjl~ zc0m2vt@_oSJ+m}st7?|U@0ZzFm&W2XE+1VQbF)#bY)va>&t&>E;(iVX%ABLwIbO2D zs2W%(Z$H;#sra zZ_Unv%6h@Jv#WPKA1A#qO>;y6A9oZ^1+QVbqgP{=HxD(jx)3YPmMM;WQ2T>B3J1U+ zgOTBD&7O&`@>bZ8JCJE;lSFCCtYBi34Y89VKstb!U&dVW4?gZxgSli3cT^B6_j!yh zIhWwa*me6$zAB*ZsCtcx&$VOl8AR2%7-Mi-d@d$vOcO2IPd`pd`1GrOZ~%-3Aww~wRmSd|Hy^e?oF?Zk+&2R?XRni@qXn2h z8mjFbH{4Un&BXEgydgO_k_Nt;-{1Ms1sxjE`3L(m2*2|z?n40h8H-ry4AixnVvqPS z#GUsL_5}8$3DaSTUBaaZ$MPe4jwHuo%9b>6e$e_^P-3C2)40 zBBAe|vM2VF)&73{o~-QRkyiUKLQ=hNv_X)mv=d~$6A#SEk@O0{TmVW#7yNiDJ zYZLry)P9V9uWpk(+}tL4cu>F3>34ZyaUpOHDIk07oKX;*uju!G+ke#_I45;TtS@(p z|Dvh#eY1X#)NiFrV!fqXzW?l%P%+Mk7U8~>b z6Qra^treeB^gDLqi5&RuaFTrQ&~M>nv2Q#@zWGQXcN`V_Ss#1~WpI~VeBgps=j(g} z=ln}fJTdRwe~F~K)1{J=uYOEw?DcB}e#yrrZugDy{lJal^TAJvea5FZ-x4^(x9xsg z;JoiP@&D{?=VAYr+F#PIbG!I=>vvGU2kQ5D{hqDgYxVn;+Xd%~w}1Ec3sZl-9qs0h zcZXn`!?)czQ0?!&LttuZKW>KD-+hIApWj2iXR6O!^>Oc%8lH0JQ?2dJ9(NA$r28uD zfpg)V(!Om9^W{6Gq+gmZ{s*YfZI?gQda0ATOH%K+OZ-n$|7Y+IoL}kpb^Y$7{(CFT zt@`~1-&SYE-BO>Qz5ANG1LvN*CDz~cTf9f?GxgiA-xd1ZaF68ST(w_!kJRU#`h7rs zes+)Gnei2gJD}g8uYC9Rz&YqEziNNk=JUz>#OD|H3FPqo0(tuV(wetDC_U$~2Y=i8 z9cSV})>O```Zc91eM8zh_psD(*TWLa{if8_o!^wYdi0wT`j$s3j|9%ek4TAb*6+Rg zeOAB0cci>$e&@gidFSfyNLmj*DzP4Z{Eo+mQj$vES^R`xen7wHKPmPLpOXIYb-wM+ z&fk-?KK|@eay)41h*D0d&P=Bt%46tg8++P**i1Qfx4}IZSBul?oDFq+H%y}(_JWfk z9@729o8jySY#ZVI@C+)rJi=fx6Sj<3r9Hwvfh*_igKHzMFDlMAD<`|n`3kNOQQOmj zX>%S{*GgwhT~Dg(EzSqj^+Q~XodcZ@sp}2KQ&NgaT zbCzn@dh6OvU6)$d-U@k(b*)g>L%5D7Uk9k`hw8e9_l*SS9~JT%XINcXS5o+xbA-A| z>iW2Ithy@dx`8*-a5}rXlFu8Qb?SPXx^A+rqtx|j>pD$cpSP|H)peV7-Jq_!tm_W< zF*i-y7@U95uzPWRk{bL6E_j}}q+asgiSSFl&bwYIwvw}OeZl!Q+A77hSi>H1E=iq@ z>p)yN=Ml7iNZ4u(dy4&sl>Jm(t=#c=T*J=8^#xo{XxNRoX5sp-y1u0GzUMrxkdLYB zY3GOPdO_no?L4QQ`470#oLx<%vZUwvCpz=s1xzSp8?J6x052=f`M4f+e(k)Wu4U?a z)oJErt<5g*-|RX^u^Fmi3FsHcN>d_wN_@lHOi~O;25&8dBH(>bfTNHa|xSZ^t!{ z8<9t9*fARR@zi_Ob&|TSPqD`Y%W1flaqr=?8g?nJuGCGb`_y$cu3b|%r~c&22>*Ec z)9IXZbLwvz?_0R`A?$T^{Xku}q&BPTck23diq1y7H`MjHRFk@z0*QBPYKpqbxN^=H zQk_DooO!s?$lc6OOL{{Zb}uf$vNx_{Qun3$)b$Q^-Jcpz*D1L6Nj;EStga2}dN8#l zEw%KaKM%|+|-m$oj za?TPLVQ1hv*4gO3H#i%dmt|$dZFJWLQlgu)_h-d*a_~t;z)x^F&e^WK#n__e{>bg(EUUCmq*VF$WVfP(Z#nmkif6vSw zI7siPfPjb%X)1O_v3EhSfnteb?}`-=#4Zxl7`tK;HMSTF)>sG{TND+0?b!Kd5Wd}}<%exsbCB2!fNx5E>b74&ey$~MSOKKqt)KM+1Rko~w zeY*|>zpbNHvEY8+3$g)Kg?Ucm6sf#c--6rh8L5KS(1Kg(1L!kRQELi;iL%GL{e=K_GOOUQac;bkhO!< zRGUY=K22(=eNJn110+OCZ7nVLE9cf(=&rT!!X0EI#-m`3Do`$2J3@7a zQ*J5^TGG7%)iW)1#9IJZ_OSY$6Q;-fN715Jx#gq_+SjB_q$2GH8$6cwIp9%H zq#d=5<@;iWfrk$qT7o^wPB~p)rnEPG3Ng7RhuRSCkA_@5mY49N|X(Rt2 z1sp~>$iM%kveHrtTQ_o*q|3ilTb3o&KZ46Ohfgoz#1V@~on>e#S6GLupbDY~=$~5t zQ~hNf$}KpGwTzHWNV`ZQWm8h+W0)HyoByliXxZ{#xiPXe=}bPB94p(AHXlb#k{wCE zktWL+lF{B2*_mXtH&w=w3Qyp2(FzDdr(5No)=>jIJPg41hU=0g0|WuXF3a=GL{Jm|6n z;whJ9F#nRvYKYdZ>mfS1ZiE=*x)oxW>uxC1%ylosZmx%*{xPn{VE#>y-4OqTi2b~& z#-*luE`c6qQp}>bl;Sl9oWGu?w^7_h@c_jFikB(gr}z|Nr_?u|H`Q?Xh0I`BFMEof z6#XIki`rg68up~B2ESAba}?3ms|HMW^QsMTs8@Z6Q@x@f&iBH8=2AT3HPY201EKRRI?PVv+5}?%Ljo^Aiw$WS z*QHbHMwsrD`W?mn6pusn7Y!@4f%}#d6>y(EhUhFt?&@E!q;J7N39ycJA(qT(AG8jW%8#K^tYirOU zs59LCkXg^Jph-~A0f;5bwhxMdWsgAA#FUDea3?pL;oQCgVVz)-lRD%DSm?JEOM%hwDA}DRdCs6RdI_YQk-9P zwT&j$Rb6lMPp>Z8#HC(yz_`s5<7J2%oOc-UjMIc;@KETpcQ9U;5`*8v{4v3LDd>MN z_IypSBTVN7FNJAiy-o&ig_7rk*F(wwxsJvf`Gnw_4i3TdG?U_bn1l7Kg4*_lOoG}9 zLvpE=4G>?3Y=O8Ycn8G9;5`t>1doF#YyXge_^D zaR+G5eNR8z*i@_P8%o8dmao1AVpR1#5W80&XC0e5uKEs`&Z(XYaaZ*+Rp5OIw(S|g3t0=5#2GMd2kf+GR0 zA)3H7!fieQKD##dY+*!*uO7B=E59fk53L=4AXk(YKXYs;hJ2t0RHFrpqfWu zd(N$iTYGEG0*I$-o`QJ4rk`!e@n-G549*lgiWMk&QLIC;BgNqmJEi_rGl#~VhfuR~ zB#t#+k$AL}rx;AJF2&}NxQ}8ZpFzoE9{t^1(TO(eyx?o)^u_Riw? zoDSk$A1jVToGbt{lxC){o z5~3HvmF;Ak1UG;2sLfFL;@F>U@M@3Kk>XREA7H-T_5?)dw$~tAr|oSwXAym9NNayF zIA$o!$MWG~Ow1{FMNEk)gm@t)0@f7o2NdzK3-&W2&cjm?*>O0%f#N}m&EWc}h*xoq zJ+aQF<^6?ySDX{x6}R5iu3J4zj@$M@$2{XwFSNn z7*6rKZZBYZeaKdb=`PmrM0;_!(h#u^{xIg^7OqRNT=yN0|Fj$7fY)b?+dMH|rkF+X zWgVQe%Ln6MG(C`}r%;?taX7^cioa8tfVx=zqaQ|Fe~cH-uK)>cg}bQO$gcpb5bCdl-bgK2h7<)ad6`u=KS_SxiCMk zJI2Elk3%e3>b~a&st04^hz;ia&jVU{#igF=j`0#ifAM(&?yrB3o7TPXTJ2A<9>rLS z#&|ls*9X|4UXJ_rYvWisL9Q z?Xw%M5@TE)O2gURFBW1{KdiY^Kdd>iU$@e6sa^UHg*%D?6sJ1|9K|>uZCbWS9smWxO#Y(tox^d+hBTlFTA&@l7w5sx)*Nw;k`WI z{{#MC`xHx7r~UQsecC^%EG(PdI}d8Bl^6ii6Dh_f;x+j~Z;ZwsH}>Yg_jt)Z#nxvg zwSl-GsUyT?NeK{*BeVJ-e_yP*D#VEtvwKIvbZjD)xzIbo2k&Noip8sL)AEWKImn@O z$+^%z$ioL;n_&E_4#r(HJ%!>m2b{Cb6XR@}vvQD!4~~E{e2pUqYaY`1pW3#0$E7+B z##k02TzLj>@(mXo2ET@QW$=+w;o{f91$NFt8RAqfTzCw@t7tWt_7_cu;MN;G;!8h8 ztQ>)N;K%or>4IYu#_9P7Ax_N0=_-4d#yN|y zS{<(W-v0ig)F^-d@*;TDP+4BofvAYhqp+3xHDml0kv|Gse?SpOB}IIoZ0cy7zk2jY ze@*;88t-0|F&G^w_HTsKUSkfx{b9tIWiTB*W`#fe$|q$9KvcxIF>9gz1!KO2xPjsi z6fck233Jwt$9^86cxyaf2i}kO4^V{11dMeiRDjrh0@gD-xeH8xLD6a=W-Cm@^35kM zfH-R6QdsLMlki+_I|=I?Mlo$tBE0HZItlApG#TgTO~%^pQv8czxhXiO(UfBW|LnUJ z{x}w3+~$d~XbQ%GJ{a%N^mB;*V%60D-r|v|*y7()@fZu7hV8bXICL7Wh0!jy2)#s&gv{%bm3SFJKI8pUx@g0pDz(}&)8w7VqY(OwB+US55O0ViW2 zh8@T3n3FDv|LirjBA%NVm$|4FVH}x*TOe%?zJoDujy24|n*Bwsc}pt!i&pcNL+m;4 zMPOX2aplaKhgVDEYQLJMzoYmQ#oG{_#jAOl)^PteKhru~xX*X1>@1cnSW($ue76AK z70F+)wla)U3-Vx&b5;>VpDeuptdeyPrlYeSL+p@+SB!t=l=T1efWFXrd=|zb5KHEd z&&sQeqd&$;G(DZ-Oo%0A+6S$oQ6A&r?ii0#+yb#vYF5@wwNvUUi2h=0Rt?Rc@7wog z;rmM`X#UGAt1ABDW0n&{yM=hCREgr)?7*u2Vp4Xcs>VHJNsFJ_JSvap2*&N%711XNDIF;hoAgpa3 zO}B8z>E$%to2EC@bT~~Pqv?-+SmpvvtNu8Bho)as{6Nu`<`1Mb3aE=^9CIGQ*=LN2 zcn+3qjrKtYtHP+AgVC2_MTp@dH0LP9dO1HsoSIV%Tk>5FUZ0gk2h8^?5`ww~+x6lYRgKyfj}RTRIWxC3f{S0#(^d_M?t!o`n^ z`UQuJGc~j{S;48yh`!m z;+){>;x)u@VYdYPP!^&;yn=|U<}Z$Y0l&3KuTAiELAxXz#V%FDk#x-<9Pic)GG2G! zyN-22I;B=xhOf=*EsL_RF5)PTf{5eki;$9ik>xohG%oeTa*SswUZi*(Vx+jcJS`O4 z!g2G{p6f&Ks&aFvvsm%-nnC#57GM9aScO~Q>s5HB;45N(@e1bn)0TvHpH|~l;uE|Y zic4*|I!B31?Mg8bqQCgG8n46pn#gcCkJdB}cNR8m z!z&umnPNP}r2UnfTZy#&;ZVc>UQgJ8Iw4k~!GX$D67QM+-Qphyux8~T&i{7bf6os7 zU$g1|&+Hbc`5a`e#Fc|MeTSx>91Mq^Yln=UUutdi2cCaB(5P-Yp`xryR_il?amw`e+v_v!y!cgJ@B*SbGCjN8!Y?aRZLU`zfE z>kiL19&u~;-}_wif2p(M5!{~Lj$oaMN8o*IF@)wg9>F@t9I4yRRr&2mXnR-TeymYP zSEc)@q5-bTl2i8}Zld`7bcMnHz1^Gb|8rgbz3-YI#rm=5|9#mf|G#B>AH{wSrZ}Er z=21L~jCEgo6pxJ)N6Y$H3AxULB3z|~=Qp@Uck(g&CV!BXm9YOY8J@qb^kanpE7AN% zxB(FZC>}nJ(>5otOy2kZtz5XNp7X;`Vlyq7 z&S7wsyTV%S90|H>$ScpefdapJXGk1!j)uEaxSfE%Op#A=W}S3y0l7d@nz#g#!mR?9 zOcQUN+bOzeNy-$ToVzO)afovcF1?jfBA?~$(qFL^H_Y5%#a`5?gtcUQS^Kt@4x%wB z(=x(kvf?0GktQif%c>lyfDbuKSA*R>Fo!&>HA1X{t`2svl5 zo|O+dXR(D;U~}8`y5b^sk$$xK#q~Dm5SM)K`ap3N1uQqWXP}>1)!beyZsIa4+U*a} z9aeYv*%Np1gf-Gls_x=7Yo;4~X-0ftEpl@M)vk$rFQSFWRb z-+yVi`!LXJYVVkqPAwFZ(#1l``BlUA)5R95b8LvABUIg;$0^vCI%0 z6HT=W;ww{av>>tFRE$(Y~zP%(w| z9jtq(SkcJH9Uz@!ohhBHg^DLpM(%Ry-b$DVZfxjz>8bF!_bk?X=u3n+&$1~qU5gM8 zS#D)Q)Cln>%ePD>?CK>n;sWwJn#teRyOY1Ktrl5wT2A&!zVVNZ|N=)i?) z3hXUq=V&#>c_U|WF1rkLmE~Qwg;G=8V^u60qDG2mth!~hv`F!mWL!~di4R6jd{uV0 zR!c-iV?PTl*g_pqhxACO4e743r)&WzmV`ZvR_cfWhM<-fpvfeombzjZ32V8i z)fEd#MlE&4Qe!!)rLOqa)J-UP#1M=!fogs66UnHvzBtdhXRvX(g6^&RAA=gy2Gz7KS%VuIQ$ykRLVmOzq?xV^UVmzz9k2NTTHNs_?)>6!5 zO>}9Yv=j>s(Kc%(mXdPBA3o8tl}KuaYh)Zftwd%EWBtnb7Amd80#+5@BG6LO3`NvkR-x|{*+$%B zJ@uUqdd|Xex~+K2!g0E-_`nk7X3KU0Rs;SrEv3t4fm}()w1{%iN_*kXxsK(Q$o9gA zl~is8D2SC>E<)`fLRgE-<;o7C77NGQj-n+C$J>sg6UjIqI*Bw=y1=oclgK3*<83E# zj)miGjA+mr`kuR2S^G(!u}+dku&$AkSx;ac zV#IXT-;j$Hb6GBaxiVHPGPOZ=7AskSe$h&t_?DC@PC9RuabmZrowBPqO-hH{e%W0( zwZXMO9h325O*<5PL&tBcOcYV=Q8}WC-%PcS7|O!2v9DM}N)v&8t<`?wA*&s<-d_~6 z68uif{vxV_QRiqV`I+e35tXk5`X#FaM1NKWEH_XLU@asivDTA@lG4R4SZ<)G(+O)S zP>w<_Nkp?wliIPa!&ZWSmBD%d8YG6Y-hc*+@usri8z3pBF3F){mZ@uUn8-GDTMie? zOg)ezM6Ri)a-`U7sz@0ncAI)BM~fd!y_I9c2~)R~v7*pau^cC^oBAlniwCAueS-MK zl#QM&{xIdFPZV&d(RO*`=c!K;wx)db$->=~n>t0*FjYaHDq>BA>eIw%Q+4zdk!>nk zPZiruwbRqY&!)QS)5R-Oee`q@6bXlk53L)odhvQ#tx9 zvBK19eYV(d>RWw|xMpgPK3Du{>X<%Hcy%eMGgX-{f=&IbFA&X573o=`H_OpKS1uF- zS>B**F_L85^L;KRlHgSq-1B`d=8+Y1_n?rY_0t;zv{0SWGtcvwlP@A!Uk*0jbJSafUTBz+N81>fx_I-yh&>^`imMj{%jePMA6yP}AzP z_|2$Oxf)R4>WnBhWOF~DP&p&svwkK0O)^H`Gs2RH6%`0<;f#o4VGHNPY!MmEjNW#AIuh5urIfS4aw-sEqKm>aso@< z5^evLyDd6%4%@pe-1-_Nv7h%uYQKM$dnBCtqq4jMnAFFuZ2ev%4q#J5lk{l{wCJ5uw=0~HRzv`AH+qHQSyVp|6hgs4@-U$ z$wLg`7SxpeB%=kXb*){L7cBn@QP!@?nc@Gm?ylS*8LfLL4-8r2DikUn$_rLfg(A>ztVxjb zR6eq@A?K-BjlepMTD%lLlCkby$}1N3tgJF`6qd{u8!E(Gms56<(!|~hN!I?#gVC5P zpd%|l`Ibv|-<43WykaxP$l-PgRBEuW&WcJt3%6%g72sX`6L*|l5rN-P>N0E${LFGIHT9YD;Fv?6-QQDH zQX-X5Q@OI1QrlFtQd@~4EwOB>e8#%A(t>rU@)b}ALqeqUFCqOV(SLV z2~(e}8!CR|v7bv|IU7rq5@yQ5(pYI=%GJ_DX>F>sC0glj%Gc6VNitR5(oC6Ps*KCRD`9avfflJODp9NDF^ye-_lySN6Hp@t@dV(F>mn;L0}S1yvJuAlwcC(KDYE$8k@Ogmi|f)Gq=|AnUZAY23Q6vqfKqJBq>WxZLeAQ|sEtWY{k z#ac2g7phcJS14T#!C94Jy+RpF$`KE%%&=LhWtDRHKXk%Wu3V*@Hx;d{R<4?Y zyI;cdG8U*`SPPy{>u$lwpYK+^EbmwbN#!vfNaz z+@!2G)mr^lIYCMn)q}6vY*y-|;5y`pdck*WwkR!GErTE1Y*p5YFXM|C7*S-+J2jT$}`r>YDYlDtoPL-RQPS@=|*4dLUQGP#g2vJ$^j*Uh2zQr zC5naP%0XoS3&)j%%2*bTRfm*iEF7y2DH{yYzWqVjZYo#)p!~okaV$Qp94Dn&8i!*rw6>6&Z?=92QQx!lxJ zmz7!|R>AbVDq@a3R#tij>yY=2cMvc`vR0EMye-QHJ991Gv=eWmng;k&)Bl{qYYxA(QO zl!fp1zEKXb@ZH`w%4rsUD*IM>!@^Hx-@=2)MnCaW*>_413qO^8r_^BKd%wRaJy`hO z?{7*H3*SNhU0J}wcaVQqR!k*1`b zi`v|jqn*3jnRHBR6Y-a=r#km@tR-C}L`2$_QNL!5j_|N6qwXZ-h|v+gc4gHUoSPXD zZ0DoeA#{0i0K4Re+UQvC=!gIQk`hkV#bR|_^Y_x}0 z)5@wn3$Lb?RSyQZ!D?F; zUPG#><5_qOsitPI@cau=7qjsE3sJvf;W-wnZfD^+7OK8u;k74BEwjW}BfR#6!LK_S z!fQ{s+Mb2io^Umuh1Z@4bvg^LJrU|c7G8U*tGiiv?WwNjv+(*-Lw&}=>q`x_n1$D+ znyT*?M(cQ8s;LIE@Y)lp#<1|(6R9S$@cL3q9mT@yOD%N@3$G!y)pabqhSXNKlZ-p+ zI_hyFN27fm^_r=7c6C&TrP!A=F*NeMU0t<4YkXvuR#)xDN{zg&)KmN6k3zyb67wPz z`}%4!DNQVoj8+<}pI8}H?d%(?cFT-9GpahiUi zrFxr%PZYFNAG7d@f|ly9EPSG%rTPa8pD1Xleq!Mh1ua$U71&;Zz$Xe?s!k;18G@E- zF)2;_2y4_*owdg3*|kU?`&Q}(){DsNN;}oE*2w({>(@^8UT4Um7AlJ6SE~?oBG<@; zlJeFYsz=)Sm7!L(D%!VGPqPxBmiFq3uZ`RoDA`^eveD2q%FSXes8s~HE3Eakg6%t~ zV>cNkcRMYh{P$%^Y%er<&`xtfF_eM$A+VI(+ z`VGs6bdpt(^b0GJL5~@JAn@<<(g&V%gTYu5?jv zvC7oB4SLL~T&GZpQ-5XEs#63iHUwu*Yx}Nh)7{28;Agbm)J`n?#G#uymW7{9bW<0w z@NIN2m-qB6HLoz-Y>8^I%W7LVCV)RhQn%W?Hst-xWRQ&8ZLH&i4CYsejRm#KV z@&$g{nV?Q(;isJm>O2;H+L@p(C#8v=bvoH6s2fQI@JUmV-do+l!cRC7)t^}S2}h!O zhlQWZB&zSs<#J^o)pIYlo+gIZ*&zF>O-Wd1meybGV(OCoOdVkAnjD~xH+5SMR5MLI zkV)!BQ_=b$^`5DxavSCdWMRz|1`O%=RMADo-k#jk5O0bFKInh8LJkXa?;1Cg$GJLOMW zXqx&Hseqn%Nl}Yf`21jsdY^@_22<2mEIe0I)Q_YeEqJb^sGm58Pbj9Uc0bTMSn!#| zRJAk-pJ!NWpQ?tj{&w47pQa8mWXY_%6_m`{NNRc%Ye^GF>mGsJX4aXyKiQ|Ng(SSg z-6}KGKMYxJ*R5|gL;b{hR`;C!3^m{w){<%Yt?p&}Of{GUFVySZ0A;W|>fN`WsXFCj z$pV3+#Y{Dfh2zRhwId71m6_^D7LFt{)rBk^NoK0sSvZo+RL`++teUA7lhQvcWp zkfR1(G-{Fc?Hm@XHCQg7C2CWae|=YnFVqauU8PF>LghUpu9azma7|RD`ksbd7;rO)Sav~c`c$>s;{U{b ziER*}u2SVC>~*GPNCS9hPqk;IHwaNztM05N4YIV=sxNC}gFMoIs>`2 zYAx0k$gNeQSoa%5IjmD#vWgqD26bZDH|*k&t9ECVZ`c#mmsO|XR{QnpU{)C9R+Me}nZ}n#1s)tF&Q&*eS6GjUbeD`Owdfv#<{ooe$s;OMLMZITgzRgzk z1qt8%+3T=f{Yb)he~vhOui9P4UZYMs>{dfbOT@-TMGkw_zO3&-`_u)j9~wPz*smUA zoow`%!vXcYDSO95>NQj49Dh*nn+kV4qP}1)b7|suRDEZvgX1wZ@Ve2LlZ|>h=Bq79 zOT-0ey+9pgYN+FJwf;?`-n*z5pg%eH5pqSUavOV{ZYkCH1;~zM97~r~?GEMW=(()g zkurs6<0AdC+Ljdvx}s*>#gdtDOuTixs&2n$D55dy%6&uiNxzW_Y~D2b2s!5mm@BYp z(O5cNQ^O1?%UtZ7Zm4ZI*Rk;>$D8UvRu57-m%Px(6@Djd4k;6k0$K#*~ot~ZRBxDS@BFtK{Hi3^)%laU##BFNp}D;-$-zHf z*7}IjO!>RGYimq}x_D??Of_)v)b^Qb<>I9sGu6?h zw07E5SC=x{B~!gz%4+va4R-O?o|zis;-mdxD#gWDlYf+KiMcN2G&@s^T>P}srq;Ol zYeA+qy98*}P35_i*P=}2y98=2O`US7pmj7==n|xLGj-LaqSnXM9hXYlAXATBDr=)m z{pwOhn`o-orK*-@N^uR=7MOB$t)?w8<>eZp<&uo2)I+t+tj&#sTthWnbNCfg>%SX^ zsG-_%BWL5#WU*tYc8-)O;+kBx57VxYazwu-b>N=@g%#s+OT_pl(XJ6%15=oowuofh9X8|bnQz}ZI?AD$*5(t|iFYi~ zN;9pqsk5-$c0*!dbhOf3+d(>}O@QT^YkNrr792O5Yp1#7!stV;&EZ=y3e;I(!7-sb?u?;AQdQIl`Ycawd168_|C!$#{}&LDN}T5TBP^Vo^Y;LQ{An%mSn*?)8QKo zA07K@DWps>rKz1;KW!#!HZ0dqTf$n@6rTRp*6?zxnr@Z-H76URmd&8gv?yCc2bzYc z1GGh?yULlS7hMNvD_LcmJ$D_bZD0*-mZc5SzB6RAr`ZG7!P-97-%xUhmd_=dHGkna zOgqDx-#l6wu3ci?Y<}HwxOR(Gy+xSY2n;9(%l~LMr&OL5%-Eoxmj+6#>2_GFt zYi@Sf>$^%s%f@bFw5qHQEu)pOT6Na&mOr|V)taytLdkJjC)Rf@o4bwI`Wmu1-?C6i z);?pEYK2PTk`b+n^kglW71Jt9o2aF6$+4~4x=qsNu$HuH?lxIl#wGJweRQ3wttUOQ zxz!5ZJUnu3V?3l8il;t9{SHJ+@vuKr*)c zdd<(-XdSow*IGOaxBNHSmn372Hfq~RxTp8HZPaSJ;Bwf{b8efowj}&ES(xj$T6dB$ zPJgTQF>5)yVwh!F4 zXdhS!psiXs{!}(U|G79$Xs#me&3-1ljF zSYNeub=t2z;pK2Y?ALX*= zWlhI4_bXa1$vAeeY65-}4$t?EWtY2O)x1ghN zA>qASu6(T3BH?+v$?b{O)YNxw&$LCxa&%0*&AV{7Jh9G-(j5< zQ_B5UZ5}B@WX0Tcf3001D5Fl9Vq_!8ZF{n?=eLcq|ob`JB5C+w4#64KH^fCRhHY+4*4$`2x4~duol&(ip(P!S1CoFCgIk7>#oRq zX36*Nn*80=H7TVYP*RJk>(b5CZN*BK|3~l-=Oau#l@{69)B|ZFJDRf5OUXo2PP(le zX{t!Elc}b1rM;YE%2Ric%S`>OJIWoVe03+8Z>mUlmQP5=HPS^ol*e^2?&n>l8!1N= z#Hb#w@<0X5Ws6%ewjLhx9mzN%z2pbd67f97*~3ffL0EE$_!CrGI+3!4Rjijs87V3n zwYbJs^zfFEB;!c-kqt@s3m1W^k8H`B=u)Kn$Q4FOI(B_!9{fHTo)0({`^lH2Y!MV& z)5A~tRl(dNxU*{H5g@}z#&}d-_GICB6evft@Lj4vIiG~@QZ@Gol*>tv6s<}dj|y^w zsThwS`Gj;=iH>dTR!NqxYP6Ra+ry)>Y)rbVjEU{zQAG}8t&SZC8pk>wJKUqHoXUC{ zJI*6m&S2Shp5jqW&S!;oPWK3ri&?Rq=Xiw5m8^-KvpvG(SFDwtmwJTDEv#dmS9?Ur zU988QzxJpu53=mLZ1Jce3s}{=?DVK9e`a;>vfm?8US_3r$@i!wZ?nGba>k>!d_ux= z<+4Xz`Px*GUQd1?;d55EJnGB-!NxwqYgPjZy9E9U^fO%^c{GqiDYr;m?^5j1NcvX8 zlE!xjn#dqhrsZiDTeXP{VZH6*28s&9k_7^5iIzi1#(CRJjxl5@6Q_ALlapCNadx0P z5&taLT-sJg8Oyblu7)hJaqx_UEXzuWa{~pk212ft3}%ghTq{|VH34$1Wdl|!=#J=@7aB%}3?a+D#ubL=Q5vhdEaqs*)KPc5C~eUh*D6}l#X`kTwa z=kIc%krR!&!uK8IlqhT=O|jckud54t{tGb5U_m-zw>$_%nCd#4hjoc2X zGg0>IVCYy^_{3eNkkZAuu5%7vsH&{EI-@)ar5(zaWM=RjG^>fY@H2v!dM3iJWp zt~(}4r6bm99G`=v4Jp%--R+X+AnD9n+wBghj3GEXqLslij8q`7mcg=^OP+R%@f;#W zC#*9QK3hrv*|0{qC|>aUjI4<+@7;$=Z<0~VFxfPQmZKJi%eICr*Sbyf94M8a!pU$?Qc zGz(v~j+a6IDmg)hn0nzjL3SV+zj~4^yRz`JQS z&#}67Kjb<|!dGT!xjvxDvMnpZu*+@R^$FayKbW3=F8{l`c<^(m{>9 zX2>$Vus!2xn3=LX3!jFWC2O$oX_#5E84I6=nI(I&@L7)8aun+gABhil$!5&t(HsZ)J|`Z0feMNKQ6Y zEEmgcQy=9L`Hd-6|3V%#Wuq^Z_e?qIU&=pCr7Fv$ZDL7ZeD&orz?7%HLe??$v%XTs zla|0}(cWv7+-$0w*BbdN>qhq^uUz@T)M&4-WMUs|A(OsgxIred@Ee93IP`@+=F#(YRG!W?9PKx8Ejjv%-7K^4cb!u#R{~sN3Z$ z)*0_yxn2Irs@ua>{Z1-wuXMNtIo&LQH zX03zVPFaJs6>>Xe1J*vs?UKz{1(4e%+p`K`-FM44)?--r-Lg091LXF|fh^~qUG+V3 zBrB+=t(qs3S+#n)fzntlA-7k~W_5?$Uimp|aL<)q`{Xj#*q+~ja#_=Q7Q%o3{Fb$% zXAx*8YhTa$RtMw(*4dut><`EvS@&SMgYpdPJuG)n7O~vo;Tt*f7Ar6wzL6szvuece z@cKdi%8HIZ2r6d9#MievEJZ(K9}S5=XMb4Qurgq|Bhs0*43;}0%doaXdq-se>nyZ) zR90oZh>uW@$?B{>`v<9_fc_rMp|50{fRY;iS^`q>?ib%NR zSRe~l^-YLSPsmxUVF|hNgv=(TTaqF7ll+o319Csf zb*xp8J1IA@wvcwPjzP(jazE>8LZNa>9%H>qC<2`(8RPV6srSdNy9AyP{>kgKbTf6{ z>x^v1%4u@L>u1^7)P1jWat$dHUS<8_RVcTcdh2yTJ|Gp)XZn|<=V!G4VB|_DeM#0Q z;S+A>?2F`B*57XRtuD(QhAcz-p$?GJp=bR|UzWdc$!YzXdt8xj1F+6Cv9RCJ(pTlX zBtz@^jVpak-htn>#oX3@&)u%eStAS;^n2lWL)wirbP04*u4ml^-I5nsA3?XJ9A%Vr z>p!jZ9huJx>i@#=u3RzN$W`w@uk<~+Vhk!rH0r;s^nLln)Y{Syq~BP~8SfB0lq*S@ z7JLr(q5O(ueADcq+{!t8D)*7x%{lz0*(3P_=kVFW$MQJm@L8kB@|=;QyRIklim6=r zMBX(u-{z@&PQv#mVoE)icH^*TnU>B2ZM)%1QRUz=*|{ks(7sV`8njd!sOBc+Ki z2X^y*FXLJ3Kp*5R)^`JYdw-P0to;KAdVi8jCu1#X;`G3=-m1Qy^(ipbTk4xxR|d}U zw$cww!IC-fYX*zFEqdZqW4T`j=6aXX)2C5iXnWe}OANuMCY4k>eHAIq65b=l+D`w5 zbND2sy}pfe_#~yho@eBsmVMq1`U5U`w;KGerv8HUvKsuZrv4ktQa0b)S^vli?{N}j zl|p^7;8^9NJFsx9a?w3mI99pp*#w;AG-1XKh z9IHI^7#5CI9(qq!VGsD#1-&2ZaS!;_1$`*%1LVB)u`Fj81HAO9EF7y!>oZt5R+ZKl zuyCv@qc36MSXD+}&1#Z#-n*>+4XZ=aRnT_U;GSFUz4biS*q$#zM_4uD?|J*^Ke3|Y ze*qP;G9c%xUt=wUoUeYL6%+rbcRBqzYe@VJ`*Qj_*1n#9di&`gSZ90Qu=ms9A2ic> zgyW{aZqLGT(_i;s;dm6F`?7F63eYREaNI1fhq7?oEU(vQ;kX&7N3n3+4Afh(aIC7J zcVgjKRYC8;@=D0}4$}LwDkPi)4KYN=bwzz43EzMD{p7nLo5TC00;S3|UJ!yhZHQjrLp+iY?eM0r7tdmL0eIoQVtiq(PeQN5vSkFMU z^wXp?@iA$;PaS>AOsa)?R##tUi0)16>gz~p7Q8pDtAES6It};w)YHG`od2MF&;icX zh(G63U(e@Ubo>p_8O~)uu7Q4ubITytK)=Pg!9Ab)G}Iq)ZfwtYpkFx`6EA!l>3^_> z#9M*HEb6soUr*s1rCV5Mds>0q48a)z9zAg1RBx4M3rGIY7(ss~FuU7gpQii41 zpl?9A|0>y9e?lsN-~Ack+ggvDQ?ljXdbQEJk4%M+$OE<4$7W&4G?71O zwr>ah3F|)OV)PRWjoiyYOMPSY_1T7s2d(ps(+^NCTYNayzjJqe59M$K`pLeBex8(R zsXcg`Z%_Ry3&*&g`Xg5J!6;~2X!Op)ekf_EKsKlxgWSq)-{6N3!M&@qt`J)`lVFK`mGXP;#i=f%Rete8WQTW{A#!VR|1^ zManQenUp46hE^#zTwlN{JG3@v1F1m4o{i8Gb8sEDJokm9Xh<+SpC(PM(*g)HkO;F*H~rLnK5j8 zxfFd3Yx%H!<c8U|XZA0TCmxx>T! zvh|Gh#&XMtH}hMfe<0;6TZgyx`$AvymC=_UhR6GTspqk-4*$$=ncn$p%%zDZ!$uA-@>oDSy`Em&uPz$?)Sy(~w>x~Rq znv5z`F6k{;?M4-WI+8Lib!xWoFVee_(k#(6+k*OVuG^?U^|C&Qb3;bKlj!u(LMcd=!ZBrVsszSaU%z7o8*79WZ&AK8a>(nc8T=sqtpJSUq)y9-!pSN z+kWByK)=Z?JRMU>eW*X=7Cwwgv3{t(0pwolcUa3H_fr3x_4T-?{=e#0-x=-g9rp(0$T~f)P7L&v>hsWEv|Kq;$0 z&UKu;9TY~wt6Pe-t(DhaDk+9e-Vm7Shxa)%%sJb@k3=&w1;q~#5EMU9)IsnA#neR8q8yUj{J^sGE-liT$iVv zuf6u#`|PvNK4;GCY1^ch;VQ4$Rppx3=G{Kk+O|b4%br@%_NH2f<={s~{OSv>&AWYS zgHZU963WB+zG>T`mSMThSCxyb&AWZ-&uyb?S@u-39sGm{d&!;Jv|U%*lsB>M3(O1I z?b>y--Oo%u8U^fOW^Etsq{rDFBjz%DJvz^bvn}GhTOhByZ8_&ng1qjwd}8y>xsTr7 zwuh~d*^`fMZqvi|GBZ4yJ#9O<93IV{wzoMCk616;e$K-q*2`8#OdYX!TVS#8i1ljM z+m_F)>e2q~`q*lSDa$^#z_(QUaNn&2TQD=+cPqhmGc#}J+uHTDwP$v*^WDIrnZ>2w z+peFj2Qjz;rOyJ^pYzJ*-rKIfZ7}D3HFp-Uk(_6p_eeXtZ5*>!^IX6(n8iKvNV`Pa z6lNnIaRGb4mp3mLb{u_}S?atefz4-@Iq&IqNw!7IvgfS@wu0DvbJx6+TCy$YZE7uz z>tx&O#O9l(>w|U!ZErJc<~j@PfS=_c+gF_Ti0k&YgKgh2Tk6`}X0YuSWohEBSVL@< zcT|7ku2@5C!NgqRIaiXFVtat|_PILgDYl21z3-Z5q}b*&I~oOV8`u{4@}l5v1KSE_ zU%I;L!)*D?YFrzw!)(tnYxLN~cB!_PnT0;~Be2(*b$hInKHT;;v*gF-8N+P{nBg_< z7Ta-Vc#XToc81xQ$KDDZVe>MZ^4Pn;zGU|3V<)wdwu{UbK6V<|&&-~NyiqpTmW$4u zXCZHt?K)>(0!ae>xz|HjvnS zapU|jeT*%O^Kj>~F}A0e;m&1aY;IIv)zW*eg(YI}$6 zS7tk-9s_3Eqxvj%eo|Pvts%34^HYJ{z-&C^-DzvXEDQ4Pv~^;ZJAZ80UA7ozYv((F z#S>G{^(WX8IS;RY6KpBW@cK8wb}KWy{yA*7GsEkj!#0r_UgI)s)0p8kF2gp98D1Oj zwq-NJYvbLve-WE6t`GU9#YEd?l?Ue^e2>Alt(MI*GHqqV@L9?3uz%Rjs66rZ_tm_LU1uG%l0s_`DUBPuY^sv zZ6@Xt36JaTr`tYLmLm1>B<+41+!A9sao6KP?eDjpAy%m^c-$KLkgby0p~n-0=h(g^ zrdIwB+b-6!i(wDjY7~P#q{^;)#5Qw3`gDo*xmue?ZF$5Nh~{0pwV!LtJD~Eq=k{&y zvTb5EEH?>Q(vZ0E}q+mpMYz1!C7gktaIzGB^I8_BFP_vQA5w&+tTuR8bb_AlB- zGW#`mU;CGAG36@HT=-u5t+pZWDR$$+FWSFu^PX0$a)z~o$2R+Y#qde~UYnCy*M)%{ z_SqVrQF$o~gF76sondy{!jKM!ZIeGxc|B)Gb~tJ)W7Y{+nXT7{DsS4t9vx2Ewp1uK zcj3SeXKWWfQ7nI9T8EEq_OpuZguF^yYNcZP7Eb7J&X#;mv9A~2*Wqj16=wPqk97Ff z7W1Xb>+ri8hD6pK!flFni#TbTl;@Fk649jU(6yVs`jYcSkd$ zF|*5u20NM?Z&NJGM9SgsC){A{VRqMH>1bhmO7-FRycl+)aYZqa2)l)~G&WsOk>RMj z*(hPwKDSZFn~f@F`A;7c~m(V_ac&V8){z`xkqOwu-ebftduGvh9j6#Ezp8St zF0yvI&&dBxv9}hr==4vc@$Wts)#(uMo55S_dM~hPOFR|%vLVQ>$Jx3FzcL`*C`*?m1w!& z#C;$)7)i`33i(U2ML#kS43i5c$2w#^7< zhI_HSX7pf&d$GM{Bs0Uk*tQ#^nBiV*+l>j#a4)tZBa0dC#a3iI%nbKp+hIJ;4EJK& zVLZ(Y_n~{;c$OLNL-)F|l^O2S_J;8mGu)@`4dVzi+@o%%afTW0QMc1L#|-yy+hu&u z4EJ!`WoQz6V!r5}>+bZX(SjJxbN!#xx| z#(TBp<{5hpa1Vd`gYL=eq?Z_Q@co9-03%x| zW-jg>e!vK3R=7AR{GgG*?8M^K@I%HXX6F}=2|sL{BDPEfJUJn})bKKE3GApLu2Vh} zo}3hZ%m^d43_kC;FTBjisb#anPZ%|9xqGTB{G`z}kjlX)9J%4Aj4{lHKZ$HMv%8+m z12&JCdUAQnSVau`^K`%|<9TA|B=$tP@d-10LRW5_Q8a+dO?fZ<#$MEUFTj3va9^TFG4gaW?!i{f*mgcGYyHXCSIdqE{A`@7 zW#3zWF^p!a2HfMU#^}Th-^I|I%<$db-;C#(;qR9HZj>;? zcYA*~KCfk)tim*#tNQR=V%_Y(41Xt0Hs0>vr`MKZvp+{k!emR<`SPR`7PWuA60o!E=jx2TvE$gMqFoZ ztYr}qL1wvPV&Kw*h$iNvH!7bgOOqp-nt9A_TRJ?VnYotON-=5a*oYga#nYKs+&DqTGTl@XZ70mE^`gU^*GyI-@qFKodzi&Ul)I-o`rH0?yPcq{a zqi^jGG{;VrKZw{K4isY>D5@Pce^i9)1^pn0bO3eiwh3`8}~^ zV(~J2=V4~sP}TG6mJRHjYNio8C$X=Go70Fbpf|^cn=_f=n`6VxY+oKcExg6dVTMl& zZ!s4uM&o*fxtbV!i+A(~oky6k!7;QJ*{7XHnk|^!vi!@=qs*SnGM0yj+-jyUyKni$ z&ZEs-Vz9I9av7Osn(dUAivG2FuDxpCuI15@6U!916^4cPtWR%ZWvIxF%4vm{34&4av|rZ-lxg-<^aIm^uMs@T)O9yCug zD|mWNL=K5pi4 z-tLtjMdq5Dm{qL&G;*QYs+aOv4Q#RLCbmrc3T&B~9k1eSy6R%*r_J-kmW$S_zKvXI zCiGV2U{~d+wWgzwVqI6Yh$=7#Ca7|QR<(^PG&6}U7vooTj@o3FF`K@sSJW0WrmwPm zd{s)+w%U2==~ZF+4zp=L%)@!<_NX0ZR4sEvy>1RBhTk$zhX za?jl~Gsmvr_Jmk=tX_^|9vxu*?rgdjeg(EQw&-=0NAs{@X7Nn(I1#E*5)N?ADSh^)U5HL zIdZ6q>|f8MM}KH$rz-aBGxtVUniq&I5XH~@GrG#`HJoY}`=7~){@i!w1e86qJo;QM zt9<6!=r3wn@iSYa&-<}=qQ9(V`=2=${gog4IQnaIF4dskg{w9f5W_dz^1`dloy7JF ztgqTkz6E31FR;FE%o1i;-@nZkBUE1TGw(!yYi2RS`YxEBTJ~}DMN=P1ErLEv(!Mh< zQ=aOV@615TTPdt-FGhc7HX4PND@DV#m!rQo!pF!`}a;FaHVr7OSd3Wo8+PvGR_Kh}b zS@zVSUFulw)U+;AUg6p!*QR%AAh+JC+K{&P?k<7S%gh45Sk*{29yo5 z<7+3G*UK5qmH}%jbD6DQJF`o$EG4#F6s>*Lyg^IcWEh$m^I0t5Pp*^Vb&&pRhL#WYz%r?COYR>X@A#8!&L{K76F@+`C4 z^0#zpE3eeD9bMYV__3%9{UT4JEW#c;(duUzbm?Sxi z*%Rwp#0-?d=_)UOU1-b@+4xRm%f$9|U1NsIxy0}dQ&)JZ%&lb!F~j9nW~J+rV@Ajs zcPTF)uAA9qlq@5*Ok7?!JSI)rC#bx}>u-x0BR$MIte+Tjo2((WOvJ3888cp{JCx<1 z^*J%=azC@Q^($iTlCv{ZWE0lAV;r*VZe=-V{kE8iGH{||dFzW~CduRg#6?^Jna4dwlVnQcR~K1)t#){NLc6@#dM3!f$Ph^hJ> zlADOF6qy?;V;+(RYuQ&Z56kLWb}44AY&J>tZsvyHW9G|9X7_E7u?yr(X4xAinU6~+ zv%C!rV{>I8vke=D$1Iek%r%{bXhBZXZDzTT5P^FrgAU!4-Z)<8!=l1 z<<`p^m^GRi9RX;dkxsjGLPBY z?t<7?xV+ z^@;MVH>Hd6;8V6!AI0vL3z;oArQcU9tGQg0g7dL&%Nu4WpPdT+9qW-v%=#2uj(t~l zIs=0oR(UhuY&EDvW;1)^ru~)@nZpd<*e#L0J|s)I^Ud7E5@}aV`}dnkkT-(j}pT%u>^cp6LX1~yOXqi(xiQtT_TUzQerBWeew)5jAftnGQ(K*$-;`d zSoX;+icu{4WDzrrWuLsnmKe)EseO#)R4n^s2r<}4qBu$0FLS-*Q^OrU_scS7So?l? zh8fnrU#3=)rF@|nzN0DA6rBn+m;WH9YTqvl*%IqJAgh^SeFx+v zW?0_=`Oi=5>N_AGRgCI8Aaj^ueFx+Mw#51l$R~-Z`VPo4w#51l$`-VHv${t(C_|WG zeFx#%S)&-W?~t_W$_v(aNX}M_-UUA-oy1gqhvWugE^+CtB<--=&8*Se$hO?5 zykLEYEwO!v<$J_beTQWgF_&obPLg&+_KH$9 zVDBE0tC?YIk4QH&to?{g@1knQ(Q`y*Dn_**ky*^J_9O6{dCC%NKO)Z)Q?(zF@F6Yq zuByFMwqusWO2riW$~^Oja|)+K!U2O_G8jPOx1o&&Lid$+MXosxLnJuC9%c{RE~P$xSYWZV>vEoGs9SpOMAb% zSdPmficu`b&pON`~XJV;E%a$J5v%q6h)GHL0LK3!riF~_ZSv6RUoW*AGE zEM|tW02^HwOPMTDjAAK+I|k(iV=0pfY045~DU->>R4iq3A~Ba3^=^`OLe67`y>voW zsB+XVCuGbR0VW5`JvpTn3%h-LFk7vcs1pT z_4|Hq`>|}Zxz6$v*-o4TfiizN(&Z%F>jm$a&`%(teQvh{TzLu>N6Sp1h8~wG6X7(Vl=dZGSh4WrKdUWd7 z@@K!iYN?M##UZ{>@e*Ya4iY2V6E>3&5;c2Rz( znE3VBm^K&XDY_$4dEd#86cd%l2TuP^e$PxR8#w)Y8Af+Y3q&ZeOL7U_Eva%p$W@Ao z#In`Xe~>L{?XB`I%eIP%f0jiAUzQ2XRs#D`wxM;avb-W=6cfoO22Q^sI}%$a#=^?+ zC;6+N<~LQ)}cIW_YI7$cX!tC7!7@vMVvHeF^v+Ma(76olMex zmA5m)EBdeStV9#T3Q&$BInGbs4ryJagS3cAq_5Lx;!)C|)Wu>-tFp@5e@(6-KdS5o zN~6>{!cC;vR!_b`n))^FA^ky;nAXK{kQPx@tG`0;TdhM!KtM>X!)h7$d&ssluEiwOp-NsGreU79WrFfRG^#(9Pt`waoTF#ou~7A@vi^O}-pCJ@^^H&E^M6Bc`;U2Sk?IYL z*iA93QMw<}7I6ZkmG!7mGuZ!0dsWMSt**0v@qbgB{50r)#X3xuDwM88!;XUQWNUBqrBa_E_F8gvkwE@Og0za;YirR3&Hxt5wF=A)@XJ-6|Gun79{xTC zojm*7T$^TMZJbw^onEWg#caPc>Md7kR{7=PwZ9)J@d!1 zSI7Bkt-UTVeRb{rk^j-p)vc%>`CdQInD%)-OnN2NNIOFsl)CUz`ddn00cjB`_pip% zuVkc{`TO`}Gjk~r(?JpNT1)p+~6w68bR?24B4HM&r_@zCeK z)k|`18a}h7F;jcVm#1Rc}=Z9QB+9@R^uDB3Y3@1Wk80Ma6+ zfV7I~AOnQDr+5g`nn0G!mz2Ih zQXN56R_T8xy-Ht;)SpA2*Mao)KwT+asM)VhqluLkm#qnZ`QT2}D0wYC8Aaaw zWB!3WD5*UAYn0FWv!d!5yuPTp*SE$-y>D*3LcQm&=}E2lqtr#eKj^R4__qtoUY+aj zO^r`~P5(Esf0PV;8PjUCs~VN(0aW{7@;sE%{xuFKjgqPqO5bee??UJ)BoFgKpk;)9M$>|)0*(tsH>97#WbwCX;i4$L(PpU zjjJh`U11KuY9`UfuPpkvRu6aE%~6rZw>-X)tYJJ!&*jm+Nn% zi4|nO&d+8uXczCLUZq!3wYrST)<9I{L~| zN&l#n=C4MGio`!x^+28UoyE$h(w~IbbWu(bo+hb!+rJfR#_&Iy^~Zq!Y@o&rN?(oj zWB9AyxR$o72=ThC^AY)DS`#YfzmH0_=tF9?idpr5e;@u;Z(xhmar7N`|8ep;`BYM^ zAL{psy7r;;_0qNXuz%U_sV?Q``{#5Rhbn%5&#HD`DZRGFzwd2juda{Er|J#=qv`MA zk9uFvC>wP|{8v+IjQJls|Kp{4Lye-kT67WdJf4ZFMRj`L8Kg8SSH)A8_MLZ1(+~Q} z*Ym1f*hb%zz&g!;_jOA3LoBpH7kxllgq>Q1X`R#lBXA(;l?Kzkc>McnIN6M(Tot(* z$@tVo6QfCwX?U7VX_c$w-K6>NmD9i{%;)4;#q%(w)iG5qx|_x=KC@CYzlG*-U+esB z>e}wRM)>zn{akf!J_a>fL>|>!-=@AM>Xo{_T|=b`LF!@)`FWQ#2T7jslWGmg8tU!3 z7HL9xK#hg3ZmM4Oq^^FtzUJ@yq5kZ>jn>S{zgqkGOO>l?;iu?yPpZyJm8;Td#KMcF8+B2*r3pt7oO)u;$1jY?mOR8K9GtlxILOVa4+obRa}YE=5qo^JVj zh^9#D{QKI48ePQK<|@6#Pvd*Crz}(bEXPCIBJTNvM$JXOr~Rtb46?y^uGXUm-`u65 zRrab6{p0_?o1Q~)J_gcvr>`Q+_0y>HMLiQksqWL^%%Xe$r^yoM*sC@Exhk!$bl2Wq zRjTf6)wo6#vzlqu(^_?vSDw{a#Zm1W3CfR>N{=fUi*Qrhm0qomFxSG*d;Kky=ZEQv zpq`+TmVvYhHtr@251*-oEExYQ|80)EsgxKCi{*A*xZ`XQ@8?f0woh74rh} zqvYS$t7`mv8_pM)9kwNf$`_w<~}?A+-tB ztN+PHhrUXD5hH(-BEJ>V4a7vh{=v5R&Q=`Nz7?kOtj4+T7~wVgLBFyyXkBr&rp}wM zRGkLTN}b~O9T7ZI0o*4zkNtJ7zc(C{R{os*+Dlhd3BYAm5ft*Lx9eh&5l z^u${e^~>VhfC1uyU+s9jEW+|qU4+dcZ4qecTXm?lhyQ0!>QgQMm5DlY>whAwMuJ+e zV%m2EamMhSo9evtw+Vw7u0DU2jcTuoxhvTyy&8c^ugYR>0H4tVA*~C{_1#OVNKoTD zchoHL$4LC`eRo*6@`O)_XwLMH8DsO=W7>CiD4Y74`n`cM+c@SwdiM3kdz)}GKnq%v0uy3!v z@BZJW$)Ub|nq=K|$~SkZcKM&<&y%HE?WnQzSF-MY5Z=F{Qg~;ii8`r^BcxXzl)ZW? zdzSR7uj;Si{a2D-k|j!=)|^+b1C>u~h3^hUwdmh|{(tsM|KB}2&(RF5o?EKtoOROo z9ymTL^F24i@ums&o{4(mq25%nZNc{XYXV8r7NjQX((v>NG**#D`Wa;NAgA$OTcsb| zf@#c!ZxfKrCCmD0bsU#c?gp|{*Id=Bb!m%ujdInq6wLK$l#Mz!l?~RSi`{?l=Cemj zO`z1pKCpqOWPTd|G{$BTAJzKN1lHyI1XiteujSKB>{Z{VIsT)izTV%Pzoma#J%7M^ zA5C~EHl?ZdOMeGxomPDoUhiG4!P)6|vcFo7KCv!%?gZ~z_{yr<)d<1wO<3SN6zJja z_2>bf*w8A%|DIiqRrURgKa)6eTGE>yjp^x)FOA+>lU}_CqT*~v8Wo9>k)%PXi|&7# z)`ZGUpxhLa<4Iy{x|jlKi+JQ^Y~xbW<8}Pc^nYc)oJy&=9ixJtg!#lO)`LEPj*BMz z`x9-f6fNBUf{l&rueMQ<)GxJ_>hjlPtF7$e?_+oa+Ng^+LBeX2+PjausXJUH@&4L3 z6Z$@9#Bt*PX=9zoi|PRf3kmnDc0-%uHYex)?cb8oG+23k~kmw zJgazApWrdIh>3JuPJ*8R@fk>)_#Px|*jxMAnNBtqfi`eN=z652dUmR2uwb$e^^;0- zEjFF0l=`%;3#4@sN1DG%$CFJ0+4x`A)HO?8-Rjc+>B$T}3DK{565{{4ZGWmO1?1K5 z9*-gYIEvwpt0a!7DX-v&nn8MXR;u1mQmwJok;1u47ujHG5sS$FDUwRRxi+o73jj|Q z{-E)FM*xq4F1AzdpQSOLV}7}3uS(bD;(L0!I7{)@*=yo5Xy7jGRkXxUx_wV&@eW1f zy9P|_eD7SB_N}FrM#W#3wuqot(SwS)6{T@>!R$?G|CLXtT8%DL`YDR)W4co=qdN=L zdpPUD9RS6q(#l&5cu;dPJQE;q{<)~}-J$oZXQ_H-B79 zyE7$Ml8uTPTcpz($@fX?2FSIDm&r!it5z%d2I>80Ep>%b{jYlIzars!2YmuFGx)cP zQjh`S1CTax4x}M2gY=CYWog-pmT2#LQuoJt;mW=h$M8*H=_}jNFRlE9l16>Hq0(v% ztmN+}d}Vze)Of(&(?txG#W~rR_SZMvjb;CPrTWB59aI0bdj62R7i;uC)_;6%tey$i zmpXl-;d^3?&*v@TnS^hqFy&2sJL!*Uf1kQgGoG?hY5%jv|H;W6Wq*uW+H{Bf|g2Z(&Cax3BL?AqW3j}Nmx_4c2ZkTQ3l; z^g2D&oPm4WUA=uUv{1n5qH?gZ#gg6<^fPJ-?v=uU#}l<2LWg7hg! zmqUIzA9U}7?tRdm z0o@tUodMk$(47I@N1*!%bRU84BhY;Wx(d)$fUW{`6`-pC-A`g}z)zt2NjwHP9WY4T zDDam>!^LL!=6W2+n5L29yZ%o%N)Sy4HVIA;j)6CTd}ZJgO9JRyLwa!H4Z+C*_c2Zu zxK~)Rz?gd zEg4WtD&!7M927hSeE!;WifB3Xq&7v2hn+Fg1@26mE^tTEbb-5#W>O@XR7)mBl1Y(d zlIKi{q(C@ECkAhWeSI^UZxe5gz6a!|qwfV7koHfIozk*F4ojO4az@${AfHZK2J+3c z)gaHNZ2)N<^E}9iF)xE0Ii?8YLt}P>bdM$S+iK28rGqGG5nfpli*5- zZCPj~v}hH`!HJmOeAA|=O6rYD>VZmV%gdk%xaH-jH9GFRQ9yDt$c@%*BzKYAL-G*G z6C^(%SxNFsk{3z-L{hV$2MO}D)&!*1H5B9$OE}0REtX_F$c@%SN;eUx|A}@3|A|J$ zPh#f3VFE{f{cJ|>&X;h6rS+ePuiYnQv-5AmPY=77Xfq1z!UF*mW3-b(uaq;o9v9b2!!g_nB3WW-MSF3#(r|1qq#lR|y$lGWI8!W>mde<8ZOZm}apNry zY~L9d3Hl^$yromxK1k#EkJRRGKMJ`IjrlGvj!K1teNEgN%arZiyRU)$@osJ21Y}n| zfpTLZ_kr#ymet!gfh^n}8P1M%i zc&}x=<*m`bbdS|awu>HUAK2rfDBB(f@`LU1puwH=)_~_FmNi=G`s5ymv`@F+(j!qb zn%&!@0CG24FN!a=PtX!I+43<*%W^^*=JK=)WDoR&Tx|-6}l+MsrZ!hRo3cVB-Ttu>h zWHHGSlI0}xNUk86PqL8Y7LrvYt4ZPr*=YR<&emkhE;#SH>Z7!tMUQAd(J{TG1;Otu zhHB%By4$Qe?!g)eGApVTjjQoG{=#4@9Y=2~9Y=2yeQMFN_$GR{o4e}E^tp-8$A@Zj zi(ZZo*K>7iQ1g59KfH@=Csswe}_Ssc~zaQ;@s$5UFfZZCSLOT4zP=n`m_572wZ zLb?&ip51ZO771t8pys9YgQH64F@ zAjM+e(FQb42kz=EVdwHbeG+v16@n(#`>yY*$LY9l^^Ml8JMQZfYTdWvLCD?Nq-8{? z)?s~iAMBI)eO#80cI5R*2L0~VE{k`^CeVDb<6xg~EB1eaj=y&hr{k{HH(Hy#ZtomR z`go8@S|Z4xgd!S6sT6rCMV?A+Nh3`fY0^j&OLOloZSiYoH9V#b%{3rzZC*+8OOh8! zZX=2F?XAsEklbt;`}*%en=Kh2u|JCy`(u-v#MV?8KXHw)DP-;NmH5$&(IM1X&x^(?Wkk}7d zI?V<;UMcRk9)A6yzA2W|ug3;ulb>wzlTChdNRvaF9Ma^GCXY0Eq*=;ZUXCseN78>yt-{6 zSws?#;FW$WD4kETm}Cj({_^^!?w7>vQxEmOL@`{V7^*2BX;Yv@W#X0JY;a%bFOgJ@ZBkeEmUUAq z2DmH{gI|hpS$-Mt!vH*+WYR1Pu933Ib2inLLmu)-uApdFSa9ymr>F|a+ZLKD7Fy5l zyd!y`^>dKp;mn5c+kG(DYVG+P%Kp2TYF2B%=TPF_sbO>) zzAfIHoGfV6S$`k)PO!_e=&igyhqR^xCk@8y-GhVi?D!Jour$k%@s=5B*MSU3YYH-A z%uzKr8Jh(tpTYAgVU*3)2VDa#hD4|-K}TQUE3^*e-<5=EGv%x zEVvHlCT4+6LPR>mD^^6BvN^I~m&N?@lsPEK?I# zjYzRvd3Wk?TtTfHfp;!1jBr`*9rntIzyO>T0|W4WKR5s*X%&Fya##S4pRfQNKUT<1 zh-ejn$IBXk;~_GD&Qq!}k~G!;94(o2^@$@*0+me$OPp69eCme*3FI>sG)Y=2l}!T~ z7MvD{iCuVLb&gs2(!U|-{>6DNuBOH@}4wXufUoA zx-2-*ruwaX@8_fQ=fHR zJ(f)M?%|c*ps8K;RNJPh7h9*{6x9Gg$23aLd~s70Y#&AtO;pak?r1{w8~4Lq zj6U~%^R`gvy&!9fexxJxFvVF+afWJ{`@4>d*YDd8J9|?rN+{-1N|#c)SREJA6p^OL zwgj#tq1xB`yW8URD^NC6yY4_&c-nCJ?j7UGDK?j-e6M%hD2im1KJEbg*1CQ)Dq0_< z-vjCKFcQM_3bG8<`W)OoK9J^wDw?IMY;9+}7*b6UUb5jCcgcolTn*SKL{x$PV2IVg zI~}Wm_cc}n??;yDYX+3wzD!r=$lSzJw+9+{97DC_gBNcPHgMzwf=rEVW#C8%GjJrd zGH_OJW#Bl8Bz+v|BS{}g`UHbUi-DuGgnBQP(y0cH*fh#bCrv!8hv(c8s_lLl`()$6 zXgw2Fp(pMvf-%-+SP`9NMRb3LlZjhPx6Gp%%-^ABlj4@c{Vw4&4r6Ax({ zHcZfpE%;=h0?xIF;5c*l)L&XBkW40-YO0Y_csRB96q<$7AllunQ$eQ2rc>mxn)mR` zOuT2AlbLSPTy35|+&4Piyl^-yINjWQQ*LG^w54zK8tuyAHIT+uz{>W>!OScZkMb;% z+2E~Z1j>kr9FT2>Wt;zAVvES*^sh@ALvG;GENiye31m6^qI`113KL~HJY`LQG|GI6 zp%ChgX}X2#%?CX^dm(+XiKD%QYAiKzRa0(K50DM5wf<2-mN>>v{-er#cv+{;RpzW^ zVVz6pIdcg;XD*>JTtd&8OK41%(9`A;TKQC&`0I65^6*Cv-CefCI$dt%|)R3nh* zAw9k}w;gCM9*F|Y&L;5u7G&H#@gV!$gLm%h;2y2%z(*nX=Ogp)*#`H9xnTd?P0Pt9 zAN0Q;DF!J^Q8p{x3o^9yU)`$d?k2@DcknqVg)6IASkYnaol2wiSS^-h0?6^&V32qR z)Nt~6Z4{(~W%jLOqk`q$RW>-*xRxlV=l_+^+ouD{sn5&lvw(7%Rm$N>JDj0(yejE< zRj|bVzeMwA1s%HzI(C(G>?%m&U3q$!3i25&linUaIauPaZndJm4VL(uVquW}4C29K z7bn}!crPkW;*>0O`Kb$r8`;WQpha{cs$Yg{DKgZ*(S&l2uf;n#$r+*-hQ?`S6ITm*j_qFSNTPUwdJ1+ZrlW!)esl z$Y9u$+S&j|T8+g0sRJ8WpDi{58?1Wqg?7Q9huMrY!3}VS>Q-bK%(=Krby$PoSMtNh zL$q`5h$Q<+(nL1EeX8TgKA}PAE0?DxQ*JV+ai{83O3%^p_kz~m@#b)+!0LBrht6ZGG6a|tRi&0-V0>7etB(0 zXuLk~*h#o|UNO)t>Qvdvmr25TXlA#tU?Mbby<>*UznEN0LMd40~|SUKjMBUD^weH z{G=8urWO@sp?sO-n^`NU6nZENo}=#tn|#oe1?M-wk(1v5*XsEVu$Dry+|qz%KhhVI zrli4!S5HkZZGiJ$NrRVPg}D^;Nm@DS%UOeaYL~;@vb%M81Kd%2m*tHzeCG2`S@69T z4SwISRI6wZ=uV8qxjG5b0q!1<#@V={0sf{<75UGhD;nB3qPAHNlnu2m)ZZ(s2o2S6 ztrel66Q`DkBEcP33wkS@!#6L;Jjsx3S*2jmLUZzQ>mWaj?W_f}IM zUZOs%p|tfn?9agKuob~1U6!0(eeVl^Z?QDj0^rm079bmomLP*gE08TjYmlu(2*?o8 zRx`zH;nhu%Ej|b76kmbN5#NH$6_-HfiJw3&6~BR8AuJXXKHWA!=8GVZZgD-xLU9Ag zO`;XZEg}?THTk?iJ};5aE9A3=d!o*CZ5*V=)crL_k+Tk8liTMGy2)H;LA(V{@+YF$9)X|W)eYTZDt z(7JCOYkjPysL-$nyc+gEm4-cVUc(-!*02XIP_&mQ+A9=o4Mc0g3nAD8 zEp#l~O8;DM2%q#1wKWuB`e=};`T~&Y`qv;G`gb5R^UT1*vf4f+Zh|yRbj)ryf&<>%7%3{Hn424fn{45Shkgc zWkU=s8)jhHP6n2ZG_Y)pfo0zv({5m#$p*$b#K1UH4UBW7fpMl880TcF zD~sxyL3Pb0O*UzAD4k2`rIcPl>D6TECQTt}Hj!ov#aTr9oun@&eFnsMIAYb%jc`xDNfax(@w>T!((buEQhV={oclc^w|{ znCtL}Cj_FUJrFIE1FWK0l76&Hk2^$J4I z2|?(`9)y09gE0OfK^T8(5RTZ9LD)ZOK{#T^1>uNI55f`a2*MGY8H6KtauAN#tRNh* zGlH-uX9eMiogFl^Gn|z{BS1QX(m>_}jR%<o0aKAgt-?(v-e{(ZlFv4A;?qRS!ELmUl2Z z8QqK-7WU7$(JI6dI0GjJ2ysdVC(LKuNH`(kGr|uN+Sye8M8cmF<}+?o`o0ze^B?Iu zA1>_J?u~%+o7^~fFJmPj#-&Mx?Eo=9iE$$1e8vJmwBN(Hm-Us*wFW9blrfPpgK=-5 zYFE1;6_2B#vUf7N84DOU0%AXSeEE%)y@%1uD4Hm}ozcPQX7n(68R0cWbvziIjBZ8` zqrEBHF}fHF822zv490%mlG(1Aig!LB_V?cA3N1INehqD*{3SAGFuE8w0%AGKjS7<( z3jnd-H!|*JtYrL*QERE}ER5|KlNcv5&S!K3E`o8sk@;RmFY7;JZn;VMZO1r~(Fus< z=QH2PxR=q(`JXYjv|>MuNsJR2=QD0(^Z=s&z04~aKVuX(t9%U*`^Ul<%9zNQ!8o7M z4M^=~zL)VcMtHTB@-2Yqw;f{=<3z^!j2jvEGJeKrX~X3iJ?)fV5vI`1DB3Gt&_UVn zVXS1-Ix2lAVr8AX)R zdl@Sks{n5Tdo7ylXG~;F2E_af=3d51M$tu;(-=b-LmBOiiHr`$3`QrTi_y(k!02Jz z!&u3v#c;fgiHsSHC9x`QFCg{@yedtY35e~ncT>m1!RTfz07QFNoWcS|4{f-&5ITFuE8E822z%GKTb4_I5@GqtnL|RKAnZ-B0lXMi1j2#!5!5 zzp@KuOk~VpbTJk%?qT#YRx%2>U}8UMj3JDnjCRIEMh9aCqm$9aSirc4v64|sGG;Kk7z-Hp zFjg{ZL%BR-B4Y-li?M)l4`U^xHjK+NCNgF)x)=)>_b^s6YN@Kci?M)l4`U^xHeA_- zForVP850>Z7+s77jE-AWc_*Wr(ZlFvgfB19_zGdPGbS=R7@drjBbB{2N?|BtB4Y-l zi?M)l4`b!6Tz)i{XG~&R37+s77jC&X>8AI<-_KA!cj4s9k#yyOcj8%X*pK9qG z7h@P8>b-zCZ&tEiyHnYP0HQvWc_L#5ql>YCaSvl9BYahb%4>i)4}~%&GCDXvgSm^b zfN>9FC8IWh{V*mnW-z)K3mEq>R{GGP%EK2XR6LA{j2VnB#sbDYnaW;FQW(N$XLK++ z89j_%MsW|9W3)3m7@dr6Mh~NxQB3CYj9x}Dh4qYfMhByl(e2|?)q2*==wb9SifJl8 zgwf9EV01FN89j_%Mv=wk8SRV?MkgSS12?0G(aUI`uFlUr_bR(e#>^RNoaWrGP|Q^0 zDumI&=wYk^#BnWVDLXe~At35K%bTN7WsXSv9AjLUH=|dRZj2^~}hm~I!V*z8>qpEx%W7T}c?N2FtCm_yuZpM%m zio;`eio?D^**O?Jj9x~&oAVi+jBZ8`qnFW9!1XeE8O5{ghtbLCX7m)Qd@rN@Ikso? zFnSrq^C~}t(aGp$6fbZ-BYZJVwU^QB#^fHQVT%OU+=wNg*x*0u;UPkd6muIvyIvAadZblEIml3`UNbLz>v@<#wos4cq z52Ke+6mfY*JEMcq$>?VEFnSrq4ld7VXLK++8QqK?MlYjyoy#-Y86AvHMmM8}(aQ*5 zfK=^gv@<#wos4cq52Ke6z9gy2GddWZjBZ8`qrF(!I~bjeZblEI*O&j6vUf9vcoerY zIvAad9!4*t*u(KL+8G^;PDVGQhtbO@-sSR)c18!IlhMuSVe~SJy>Z3AMlWMXsmiw>V>?DCqnpuFCPdPW!)|k*Qg$9j zFC%=pR*h>$JEP}}(t8=j2W-b^XLK++8QqK?MlYlIkjpdL86AvHMz>G@k+OF(x*0u; zUPkzmu8N=0&gfut`tTEF=VtUUdKn#Fu8+~p=wb9Sib}4J(az{(bTfJwy^P{hF2`tR zbTB#@-HaYaFQemgj*rpJ=wb9SigR2Kqn**g=wx&=dVKj`uzyB3qleMUD9*EgMmwW} z(aGp$^e}oE#g|;3(az{*^e~FA*pAW7=wb9Sim%y@(az{#bTYabJ&ayPc(p){A4WT) zgVD+8X7n(68O1kTp3%-I{>^$uJEMcq$>?VEFnSrqw_Kjl&gfutGP)T(j9x}@fy*;G z7@dr6Mh~NxQC#G5jCMxH6{UAFx*0u;UPkzWyy{QJ?VEFp31WXLK++8QqK?M$wn;86AvHMmM8}QS@Vb zMhBylQS|40MhByl(ZlFv46!SFJEN1)%_tJtAESfO$>?G9GTH|ydk3SN(ZeW`*dL>V z(aGpx^fHDdb9{_$Mh~MH$o?1|j7~-`qZq_~7#)mmMh|1iV76m)GP)VPjADqgbB<8x zX7n0?cZPOvAWCCo{fpRg?9nS_lA+Y=5XoJjaSp=aNF`mXQ$ zTHpPBf9QK-zo>qR{l@g0((loJ%lbXn@4J4#_q(nC-u`9%Kk9$3|Hb|_{cZNP_K)>G z_CfYk`*izE`)vE8_WAaO_9ga}_A~aM>>{y2V)Mk1#O{etC!R?>oA~dF{wQ1N>a1rw#km7bfH?FNSrP98jT z@W{bq2RjBk2R}9VrNMg!zd!im;G2d-4e38*)R2io{yAjskkvz88&W!?YRJz+8mHWp z5|+|ArAJCi%7~PQQyx!Qld>UYQ_7nu2UAX`h@rNjO@`hubnwv8L&pzYJaqZc^+Vqr z`t#5h!@3TeF>Ld&Uxsx{?UmXub#Us4)U?!$)aj`?sZXSCO5LAYn%Z`Fr{M#J<XX zc;WE>hqy0+kGrb&zcb0qBxUPrS!D;=x}+^_=`*3ry>F(D*x{}=idAK{pL3*egF5~|KCq@ z=Kjt-cR%;sbI;v&E)FeOwq)&+t|jZ2oVVo0B|lm6!jiX^{C&xYwsCETwjJFzrEO;0 zoVIywi`y=0`$F4mZO1QNx-_%&?4?&Ny>aQUmhQdmsAcn)EnBv7*|p0?v>(^*w12++ z+V+RrUugeS$B7-y9cOlI?HJ#ANaxDVyE;GY>{x#J@~OBDvzR6~9~Y zrxkmz{Qb)JRxVk!Wz|KizOd>`tFB%3jaA=X_3x{;tqQF^V)e1Bn^u2k^*yWaU;T|W zx39Tx&9B!?S=+j{XYJW*FIby8b<3%jpZe`n?>hCtQ=dIGa@roJ9eG;oY0FP@PTO$W z&}nC#cEM>kp7zdZdnNWu9G+N|SeD2p3W+Nc_az3`EleKJRo6AEYeiSF>$a}DyB_TN zb=PZMf9g6U)sR}4a#E$#*{M5IkEGsA{WG;!`l$5r>8a`F^y>6k>Fd)!Nk5Su<4klG zID^hP&X=8=ovqG;&Tkymy41#Oe zaqgDf&vS3&Hsoiae>N!G=!!irU&S3?O1(IK3*b=AOChCZE`n0Ym@3d!gDwKPm>PvX zJr*}Zji-IBe6P>m>HxJ5mbOP?8G4jD6gNd3uEwc}pqPYPf9fC;rl>=3v(vF^hB{82 zq>jgJP7_oUDCWYa8FwkogHNlPiCddy;g+X3%$D`)3u+E_yf&z-Kz#$KzXQte;+Cm@ z2lYLm{u%CndKkAyJ&OGAz&%mVs3qz-)uw)nJD~ocI@AlQQ@yB`t3M*vSJX=NDq?<3 zt$|cp3yE|JRM1n^+qg|?r@~D@YQ1__^z1x7pwNr=T$0niOPg7SNYJDYB2OAb!O-)bynzVbzSJI z*yH+jb!X^$byw&c>YmUIYHR35^`p@D)K5d-R}X}4Rlf|~uC|BnQaeIFRF8%3R=){t zReuO=Q!j>ohJCOPs+V!2)T^QG>h;j0*bBQuy&ZZCyI~(!e-1sN{t|jpy&rl?{WbJ7 zZku{W{XO(7Zkxg+4>vJ|!yn=%ETz_r9z<(iJNg2^L&skY%!Kh@1)Rxn>3G`HlMH_g zuq}+s_SN-aT;`_MjK32wHGUi5wWA*Z+_cZn0sF^43RoQf1mNcJ&j8NZpJF?Op`>-o z*l$)Tb^ZbW2KX-r5WQdoN^IgzA4tBr11W|(5Bvw{4?k!;81XoULbI0L*N¸L&> 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

    AB%VY|KxiO} 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 X243lbTB2xd&)+-9{{i4@fPw!X`5MsQ literal 0 HcmV?d00001 diff --git a/dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.xml b/dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.xml new file mode 100644 index 00000000000..2025d473e8a --- /dev/null +++ b/dep/Newtonsoft.Json.6.0.1/lib/portable-net40+sl5+wp80+win8+monotouch+monoandroid/Newtonsoft.Json.xml @@ -0,0 +1,7625 @@ + + + + Newtonsoft.Json + + + +

    + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/lib/portable-net45+wp80+win8/Newtonsoft.Json.dll b/dep/Newtonsoft.Json.6.0.1/lib/portable-net45+wp80+win8/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..7858e954a3906a97ee688e3c48acaf2b9cbaf82a GIT binary patch literal 431616 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�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

    E)%X0t`pYdrCs4<;T++@knS~pIl_g)e&I6V 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 + + + Newtonsoft.Json + + + +

    + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from JSON and BSON. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Indicates the method that will be used during deserialization for locating and loading assemblies. + + + + + In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly. + + + + + In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Allows users to control class loading and mandate what class to load. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object + The type of the object the formatter creates a new instance of. + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies what messages to output for the class. + + + + + Output no tracing and debugging messages. + + + + + Output error-handling messages. + + + + + Output warnings and error-handling messages. + + + + + Output informational messages, warnings, and error-handling messages. + + + + + Output all debugging and tracing messages. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/dep/Newtonsoft.Json.6.0.1/tools/install.ps1 b/dep/Newtonsoft.Json.6.0.1/tools/install.ps1 new file mode 100644 index 00000000000..dfc78f0575d --- /dev/null +++ b/dep/Newtonsoft.Json.6.0.1/tools/install.ps1 @@ -0,0 +1,93 @@ +param($installPath, $toolsPath, $package, $project) + +# open json.net splash page on package install +# don't open if json.net is installed as a dependency + +try +{ + $url = "http://james.newtonking.com/json" + $dte2 = Get-Interface $dte ([EnvDTE80.DTE2]) + + if ($dte2.ActiveWindow.Caption -eq "Package Manager Console") + { + # user is installing from VS NuGet console + # get reference to the window, the console host and the input history + # show webpage if "install-package newtonsoft.json" was last input + + $consoleWindow = $(Get-VSComponentModel).GetService([NuGetConsole.IPowerConsoleWindow]) + + $props = $consoleWindow.GetType().GetProperties([System.Reflection.BindingFlags]::Instance -bor ` + [System.Reflection.BindingFlags]::NonPublic) + + $prop = $props | ? { $_.Name -eq "ActiveHostInfo" } | select -first 1 + if ($prop -eq $null) { return } + + $hostInfo = $prop.GetValue($consoleWindow) + if ($hostInfo -eq $null) { return } + + $history = $hostInfo.WpfConsole.InputHistory.History + + $lastCommand = $history | select -last 1 + + if ($lastCommand) + { + $lastCommand = $lastCommand.Trim().ToLower() + if ($lastCommand.StartsWith("install-package") -and $lastCommand.Contains("newtonsoft.json")) + { + $dte2.ItemOperations.Navigate($url) | Out-Null + } + } + } + else + { + # user is installing from VS NuGet dialog + # get reference to the window, then smart output console provider + # show webpage if messages in buffered console contains "installing...newtonsoft.json" in last operation + + $instanceField = [NuGet.Dialog.PackageManagerWindow].GetField("CurrentInstance", [System.Reflection.BindingFlags]::Static -bor ` + [System.Reflection.BindingFlags]::NonPublic) + $consoleField = [NuGet.Dialog.PackageManagerWindow].GetField("_smartOutputConsoleProvider", [System.Reflection.BindingFlags]::Instance -bor ` + [System.Reflection.BindingFlags]::NonPublic) + if ($instanceField -eq $null -or $consoleField -eq $null) { return } + + $instance = $instanceField.GetValue($null) + if ($instance -eq $null) { return } + + $consoleProvider = $consoleField.GetValue($instance) + if ($consoleProvider -eq $null) { return } + + $console = $consoleProvider.CreateOutputConsole($false) + + $messagesField = $console.GetType().GetField("_messages", [System.Reflection.BindingFlags]::Instance -bor ` + [System.Reflection.BindingFlags]::NonPublic) + if ($messagesField -eq $null) { return } + + $messages = $messagesField.GetValue($console) + if ($messages -eq $null) { return } + + $operations = $messages -split "==============================" + + $lastOperation = $operations | select -last 1 + + if ($lastOperation) + { + $lastOperation = $lastOperation.ToLower() + + $lines = $lastOperation -split "`r`n" + + $installMatch = $lines | ? { $_.StartsWith("------- installing...newtonsoft.json ") } | select -first 1 + + if ($installMatch) + { + $dte2.ItemOperations.Navigate($url) | Out-Null + } + } + } +} +catch +{ + # stop potential errors from bubbling up + # worst case the splash page won't open +} + +# yolo \ No newline at end of file diff --git a/dep/repositories.config b/dep/repositories.config index f7a4a6fe43b..ee09227463b 100644 --- a/dep/repositories.config +++ b/dep/repositories.config @@ -4,7 +4,6 @@ - diff --git a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs index a5e55750f04..6b1ea02dd8a 100644 --- a/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs +++ b/src/Connections/Elasticsearch.Net.Connection.Thrift/ThriftConnection.cs @@ -300,13 +300,20 @@ private ElasticsearchResponse Execute(RestRequest restRequest, object dese if (result.Status == Status.OK || result.Status == Status.CREATED || result.Status == Status.ACCEPTED) { var response = ElasticsearchResponse.Create(this._connectionSettings, (int)result.Status, method, path, requestData); + if (typeof(T) == typeof(VoidResponse)) + return response; using (var ms = new MemoryStream(result.Body)) { - response.Response = this._connectionSettings.Serializer.Deserialize(response, ms, deserializationState); if (this._connectionSettings.KeepRawResponse) { response.ResponseRaw = result.Body; } + if (typeof(T) == typeof(string)) + this.SetStringResult(response as ElasticsearchResponse, result.Body); + else if (typeof(T) == typeof(byte[])) + this.SetByteResult(response as ElasticsearchResponse, result.Body); + else + response.Response = this._connectionSettings.Serializer.Deserialize(response, ms, deserializationState); return response; }; } @@ -337,6 +344,16 @@ private ElasticsearchResponse Execute(RestRequest restRequest, object dese } } + private void SetByteResult(ElasticsearchResponse elasticsearchResponse, byte[] body) + { + elasticsearchResponse.Response = body; + } + + private void SetStringResult(ElasticsearchResponse elasticsearchResponse, byte[] body) + { + elasticsearchResponse.Response = body.Utf8String(); + } + public string DecodeStr(byte[] bytes) { if (bytes != null && bytes.Length > 0) diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index e2cfd89e77b..2c817494059 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -247,11 +247,15 @@ protected virtual ElasticsearchResponse DoSynchronousRequest(HttpWebReques private ElasticsearchResponse WebToElasticsearchResponse(byte[] data, object deserializationState, Stream responseStream, HttpWebResponse response, string method, string path, ElasticsearchResponseTracer tracer) { - ElasticsearchResponse cs; + ElasticsearchResponse cs = + ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + if (typeof(T) == typeof(VoidResponse)) + return cs; using (var memoryStream = new MemoryStream()) { Stream s = responseStream; - if (_ConnectionSettings.KeepRawResponse) + Type type = typeof(T); + if (_ConnectionSettings.KeepRawResponse || type == typeof(string) || type == typeof(byte[])) { responseStream.CopyTo(memoryStream); //use memory stream for serialization instead @@ -259,9 +263,20 @@ private ElasticsearchResponse WebToElasticsearchResponse(byte[] data, obje //that will prevent double reads memoryStream.Position = 0; s = memoryStream; + var bytes = memoryStream.ToArray(); + if (typeof(T) == typeof(string)) + { + this.SetStringResult(cs as ElasticsearchResponse, bytes); + return cs; + } + if (typeof(T) == typeof(byte[])) + { + this.SetByteResult(cs as ElasticsearchResponse, bytes); + return cs; + } + cs.ResponseRaw = bytes; } - cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); var result = this._ConnectionSettings.Serializer.Deserialize(cs, s, deserializationState); cs.Response = result; cs.ResponseRaw = memoryStream.ToArray(); @@ -349,7 +364,14 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionS using (var memoryStream = new MemoryStream()) { Stream s = responseStream; - if (_ConnectionSettings.UsesPrettyResponses) + var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); + if (typeof(T) == typeof(VoidResponse)) + { + SetReturnOnAsycActors(tcs, cs, tracer); + yield break; + } + Type type = typeof(T); + if (_ConnectionSettings.KeepRawResponse || type == typeof(string) || type == typeof(byte[])) { // Copy all data from the response stream var buffer = new byte[BUFFER_SIZE]; @@ -362,19 +384,48 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionS } memoryStream.Position = 0; s = memoryStream; + cs.ResponseRaw = memoryStream.ToArray(); + if (typeof(T) == typeof(string)) + { + this.SetStringResult(cs as ElasticsearchResponse, cs.ResponseRaw); + SetReturnOnAsycActors(tcs, cs, tracer); + yield break; + } + if (typeof(T) == typeof(byte[])) + { + this.SetByteResult(cs as ElasticsearchResponse, cs.ResponseRaw); + SetReturnOnAsycActors(tcs, cs, tracer); + yield break; + } + } - var cs = ElasticsearchResponse.Create(this._ConnectionSettings, (int) response.StatusCode, method, path, data); var t = this._ConnectionSettings.Serializer.DeserializeAsync(cs, s, deserializationState); yield return t; cs.Response = t.Result; - cs.ResponseRaw = memoryStream.ToArray(); - tcs.TrySetResult(cs); - tracer.SetResult(cs); - _ConnectionSettings.ConnectionStatusHandler(cs); + SetReturnOnAsycActors(tcs, cs, tracer); } } } + private void SetReturnOnAsycActors(TaskCompletionSource> tcs, ElasticsearchResponse cs, + ElasticsearchResponseTracer tracer) + { + tcs.TrySetResult(cs); + tracer.SetResult(cs); + _ConnectionSettings.ConnectionStatusHandler(cs); + } + + public void SetStringResult(ElasticsearchResponse response, byte[] rawResponse) + { + response.Response = rawResponse.Utf8String(); + } + + public void SetByteResult(ElasticsearchResponse response, byte[] rawResponse) + { + response.Response = rawResponse; + } + + public void Iterate(HttpWebRequest request, byte[] data, IEnumerable asyncIterator, TaskCompletionSource> tcs) { var enumerator = asyncIterator.GetEnumerator(); diff --git a/src/Elasticsearch.Net/Domain/VoidResponse.cs b/src/Elasticsearch.Net/Domain/VoidResponse.cs new file mode 100644 index 00000000000..31eb883c611 --- /dev/null +++ b/src/Elasticsearch.Net/Domain/VoidResponse.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Elasticsearch.Net +{ + public class VoidResponse + { + } +} diff --git a/src/Elasticsearch.Net/Elasticsearch.Net.csproj b/src/Elasticsearch.Net/Elasticsearch.Net.csproj index b2e82c14e10..7966698cbcd 100644 --- a/src/Elasticsearch.Net/Elasticsearch.Net.csproj +++ b/src/Elasticsearch.Net/Elasticsearch.Net.csproj @@ -44,6 +44,7 @@ + diff --git a/src/Profiling/Profiling.InMemoryConnection/Program.cs b/src/Profiling/Profiling.InMemoryConnection/Program.cs index fc632d43db1..cdf589b8461 100644 --- a/src/Profiling/Profiling.InMemoryConnection/Program.cs +++ b/src/Profiling/Profiling.InMemoryConnection/Program.cs @@ -18,18 +18,15 @@ private class Doc static void Main(string[] args) { var settings = new ConnectionSettings(new Uri("http://localhost:9200"),"test-index"); - var client = new ElasticClient(settings, new Elasticsearch.Net.Connection.InMemoryConnection(settings)); - int calls = 100000; - var steps = calls/10; - var ticks = calls / steps; + var client = new ElasticClient(settings); + int calls = 10000; + Console.WriteLine("done"); + Console.ReadLine(); //using (var pbar = new ProgressBar(ticks, "Doing loads of in memory calls")) { for (int i = calls; i > 0; i--) { - client.Index(new Doc() {Id = "asdasd", Name = "Name"}); - //int m = (i%steps); - //if (m == 0) - // pbar.Tick(); + client.Index(new Doc() {Id = "asdasd" + i, Name = "Name"}); } } Console.WriteLine("done"); diff --git a/src/Profiling/Profiling.Indexing/Program.cs b/src/Profiling/Profiling.Indexing/Program.cs index d9f65afb0e0..6761f7b68c1 100644 --- a/src/Profiling/Profiling.Indexing/Program.cs +++ b/src/Profiling/Profiling.Indexing/Program.cs @@ -19,23 +19,41 @@ class Program static void Main(string[] args) { + var process = Process.GetCurrentProcess(); + var baseThreadCount = process.Threads.Count; + var baseMemorySize = process.VirtualMemorySize64; + //warmer RunTest(HTTP_PORT, 10); + Console.WriteLine("Warmed up caches press any key to index {0} messages", NUM_MESSAGES); + Console.ReadLine(); + ConsoleKeyInfo key; + do + { + key = RunIndex(baseThreadCount, baseMemorySize); + } while (key.KeyChar == 'r'); + + RunIndex(baseThreadCount, baseMemorySize); + + var client = new ElasticClient(new ConnectionSettings(new Uri("http://localhost:9200"), "nest-default-index")); + client.DeleteIndex(d => d.Index(INDEX_PREFIX + "*")); + + } + private static ConsoleKeyInfo RunIndex(int baseThreadCount, long baseMemorySize) + { + var process = Process.GetCurrentProcess(); double httpRate = RunTest(HTTP_PORT); var threadCountHttp = process.Threads.Count; var memorySizeHttp = process.VirtualMemorySize64; - - Console.WriteLine(); - Console.WriteLine("HTTP (IndexManyAsync): {0:0,0}/s {1} Threads {2} Virual memory" - , httpRate, threadCountHttp, memorySizeHttp); - Console.ReadLine(); - - var client = new ElasticClient(new ConnectionSettings(new Uri("http://localhost:9200"), "nest-default-index")); - client.DeleteIndex(d => d.Index(INDEX_PREFIX + "*")); + Console.WriteLine(); + Console.WriteLine("HTTP (IndexManyAsync): {0:0,0}/s\r (Before:After) {1}:{2} Threads {3}:{4} Virtual memory" + , httpRate, baseThreadCount, threadCountHttp, baseMemorySize, memorySizeHttp); + Console.WriteLine("Press r to index again or any other key to delete indices created by this tool."); + return Console.ReadKey(); } private static double RunTest(int port, int? messages = null) where T : ITester diff --git a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs index 91500793e8b..e4a99daca5f 100644 --- a/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs +++ b/src/Tests/Elasticsearch.Net.Integration.Yaml/YamlTestsBase.cs @@ -24,6 +24,8 @@ public class YamlTestsBase protected ElasticsearchResponse _status; protected dynamic _response; + protected static ElasticsearchResponse _x; + static YamlTestsBase() { var host = "localhost"; @@ -34,8 +36,8 @@ static YamlTestsBase() var jsonNetSerializer = new ElasticsearchJsonNetSerializer(); - //_client = new ElasticsearchClient(settings); - _client = new ElasticsearchClient(settings, serializer: jsonNetSerializer); + _client = new ElasticsearchClient(settings); + //_client = new ElasticsearchClient(settings, serializer: jsonNetSerializer); var infoResponse = _client.Info(); dynamic info = infoResponse.Response; _versionNumber = new Version(info.version.number); @@ -111,7 +113,6 @@ protected void IsTrue(object o) Assert.Fail("HEAD request returned status:" + c.Error.HttpStatusCode); } else if (c.RequestMethod == "HEAD") return; - //o = Encoding.UTF8.GetString(c.ResponseRaw); } o = Unbox(o); diff --git a/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs b/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs index 2913f14108a..55915a57888 100644 --- a/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs +++ b/src/Tests/Nest.Tests.Integration/ElasticsearchConfiguration.cs @@ -9,15 +9,19 @@ public static class ElasticsearchConfiguration { public static readonly string DefaultIndex = Test.Default.DefaultIndex + "-" + Process.GetCurrentProcess().Id.ToString(); - public static ConnectionSettings Settings(int? port = null) + public static Uri CreateBaseUri(int? port = null) { var host = Test.Default.Host; if (port == null && Process.GetProcessesByName("fiddler").HasAny()) host = "ipv4.fiddler"; var uri = new UriBuilder("http", host, port.GetValueOrDefault(9200)).Uri; + return uri; + } + public static ConnectionSettings Settings(int? port = null) + { - return new ConnectionSettings(uri, ElasticsearchConfiguration.DefaultIndex) + return new ConnectionSettings(CreateBaseUri(port), ElasticsearchConfiguration.DefaultIndex) .SetMaximumAsyncConnections(Test.Default.MaximumAsyncConnections) .UsePrettyResponses() .ExposeRawResponse(); diff --git a/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj b/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj index b8f15328ad3..bbeffbcef7f 100644 --- a/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj +++ b/src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj @@ -13,6 +13,8 @@ 512 ..\ true + v4.5 + True @@ -22,6 +24,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -30,6 +33,7 @@ TRACE prompt 4 + false true @@ -39,17 +43,19 @@ AnyCPU prompt MinimumRecommendedRules.ruleset + false ..\..\..\dep\AutoPoco.1.0.0.0\lib\AutoPoco.dll - + False - ..\..\..\dep\FluentAssertions.2.0.0.1\lib\net40\FluentAssertions.dll + ..\..\..\dep\FluentAssertions.2.2.0.0\lib\net45\FluentAssertions.dll - - ..\..\..\dep\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll + + False + ..\..\..\dep\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll False @@ -80,6 +86,7 @@ + @@ -133,6 +140,7 @@ + diff --git a/src/Tests/Nest.Tests.Integration/RawCalls/ReturnTypesTest.cs b/src/Tests/Nest.Tests.Integration/RawCalls/ReturnTypesTest.cs new file mode 100644 index 00000000000..2fe59efb85c --- /dev/null +++ b/src/Tests/Nest.Tests.Integration/RawCalls/ReturnTypesTest.cs @@ -0,0 +1,28 @@ +using System.Linq; +using FluentAssertions; +using NUnit.Framework; +using Nest.Tests.MockData.Domain; +using Elasticsearch.Net; + +namespace Nest.Tests.Integration.RawCalls +{ + [TestFixture] + public class ReturnTypeTests : IntegrationTests + { + [Test] + public void StringReturn() + { + var r = this._client.Raw.Info(); + r.Response.Should().NotBeNullOrEmpty(); + r.ResponseRaw.Should().BeNull(); + } + + [Test] + public async void StringReturn_Async() + { + var r = await this._client.Raw.InfoAsync(); + r.Response.Should().NotBeNullOrEmpty(); + r.ResponseRaw.Should().BeNull(); + } + } +} diff --git a/src/Tests/Nest.Tests.Integration/Test.Designer.cs b/src/Tests/Nest.Tests.Integration/Test.Designer.cs index b24bf793638..db46cde2b20 100644 --- a/src/Tests/Nest.Tests.Integration/Test.Designer.cs +++ b/src/Tests/Nest.Tests.Integration/Test.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.17929 +// Runtime Version:4.0.30319.34003 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -12,7 +12,7 @@ namespace Nest.Tests.Integration { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] internal sealed partial class Test : global::System.Configuration.ApplicationSettingsBase { private static Test defaultInstance = ((Test)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Test()))); diff --git a/src/Tests/Nest.Tests.Integration/app.config b/src/Tests/Nest.Tests.Integration/app.config index 0acf1ca104c..c03b4f6ecbc 100644 --- a/src/Tests/Nest.Tests.Integration/app.config +++ b/src/Tests/Nest.Tests.Integration/app.config @@ -1,11 +1,11 @@ - + - -
    + +
    - -
    + +
    @@ -42,7 +42,7 @@ - + - \ No newline at end of file + diff --git a/src/Tests/Nest.Tests.Integration/packages.config b/src/Tests/Nest.Tests.Integration/packages.config index 84148caf3bc..095900c9ca3 100644 --- a/src/Tests/Nest.Tests.Integration/packages.config +++ b/src/Tests/Nest.Tests.Integration/packages.config @@ -1,7 +1,7 @@  - - + + \ No newline at end of file From 764c051628c360884cfe6fe030dcf719d954cf10 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 20 Mar 2014 13:09:10 +0100 Subject: [PATCH 11/12] ElasticsearchResponse .ToString() will now show the response only when possible --- src/Elasticsearch.Net/Connection/HttpConnection.cs | 11 +++++------ src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs | 11 ++++++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Elasticsearch.Net/Connection/HttpConnection.cs b/src/Elasticsearch.Net/Connection/HttpConnection.cs index 2c817494059..879232e7d1b 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection.cs @@ -274,12 +274,11 @@ private ElasticsearchResponse WebToElasticsearchResponse(byte[] data, obje this.SetByteResult(cs as ElasticsearchResponse, bytes); return cs; } - cs.ResponseRaw = bytes; + cs.ResponseRaw = _ConnectionSettings.KeepRawResponse ? bytes: null; } var result = this._ConnectionSettings.Serializer.Deserialize(cs, s, deserializationState); cs.Response = result; - cs.ResponseRaw = memoryStream.ToArray(); tracer.SetResult(cs); return cs; } @@ -384,20 +383,20 @@ private IEnumerable _AsyncSteps(HttpWebRequest request, TaskCompletionS } memoryStream.Position = 0; s = memoryStream; - cs.ResponseRaw = memoryStream.ToArray(); + var bytes = memoryStream.ToArray(); if (typeof(T) == typeof(string)) { - this.SetStringResult(cs as ElasticsearchResponse, cs.ResponseRaw); + this.SetStringResult(cs as ElasticsearchResponse, bytes); SetReturnOnAsycActors(tcs, cs, tracer); yield break; } if (typeof(T) == typeof(byte[])) { - this.SetByteResult(cs as ElasticsearchResponse, cs.ResponseRaw); + this.SetByteResult(cs as ElasticsearchResponse, bytes); SetReturnOnAsycActors(tcs, cs, tracer); yield break; } - + cs.ResponseRaw = _ConnectionSettings.KeepRawResponse ? bytes : null; } var t = this._ConnectionSettings.Serializer.DeserializeAsync(cs, s, deserializationState); yield return t; diff --git a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs index e43d0743442..33986c431c2 100644 --- a/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs +++ b/src/Elasticsearch.Net/Domain/ElasticsearchResponse.cs @@ -1,4 +1,5 @@ using System; +using System.CodeDom; using System.Collections.Generic; using System.Configuration; using System.Globalization; @@ -185,13 +186,21 @@ public override string ToString() { var r = this; var e = r.Error; + string response = ""; + if (typeof(T) == typeof(string)) + response = this.Response as string; + else if (this.Settings.KeepRawResponse) + response = this.ResponseRaw.Utf8String(); + else if (typeof(T) == typeof(byte[])) + response = (this.Response as byte[]).Utf8String(); + var print = _printFormat.F( Environment.NewLine, r.HttpStatusCode.HasValue ? r.HttpStatusCode.Value.ToString(CultureInfo.InvariantCulture) : "-1", r.RequestMethod, r.RequestUrl, r.Request, - "RESPONSE STREAM ALREADY READ BY SERIALIZER" + response ); if (!this.Success) { From 251d2f98fc88b0f6d6f9142eceeab1fda08261d0 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 20 Mar 2014 13:44:57 +0100 Subject: [PATCH 12/12] update json.net, nunit, fluentassertations --- .../FluentAssertions.2.0.0.1.nuspec | 89 - .../lib/net35/FluentAssertions.dll | Bin 166400 -> 0 bytes .../lib/net35/FluentAssertions.xml | 5761 ------- .../lib/net40/FluentAssertions.dll | Bin 166400 -> 0 bytes .../lib/net40/FluentAssertions.xml | 5761 ------- .../lib/net45/FluentAssertions.dll | Bin 167424 -> 0 bytes .../lib/net45/FluentAssertions.xml | 5802 ------- .../FluentAssertions.WindowsPhone.dll | Bin 155136 -> 0 bytes .../FluentAssertions.WindowsPhone.xml | 5430 ------- .../lib/sl4/FluentAssertions.Silverlight.dll | Bin 158720 -> 0 bytes .../lib/sl4/FluentAssertions.Silverlight.xml | 5572 ------- ...o.QualityTools.UnitTesting.Silverlight.dll | Bin 63336 -> 0 bytes ...o.QualityTools.UnitTesting.Silverlight.xml | 3429 ----- .../lib/winrt45/FluentAssertions.dll | Bin 154624 -> 0 bytes .../lib/winrt45/FluentAssertions.xml | 5513 ------- dep/NUnit.2.6.1/NUnit.2.6.1.nuspec | 26 - dep/NUnit.2.6.1/lib/nunit.framework.dll | Bin 147456 -> 0 bytes dep/NUnit.2.6.3/lib/nunit.framework.dll | Bin 0 -> 151552 bytes .../lib/nunit.framework.xml | 12768 ++++++++-------- dep/{NUnit.2.6.1 => NUnit.2.6.3}/license.txt | 4 +- .../Newtonsoft.Json.5.0.8.nuspec | 18 - .../lib/net20/Newtonsoft.Json.dll | Bin 440320 -> 0 bytes .../lib/net20/Newtonsoft.Json.xml | 8968 ----------- .../lib/net35/Newtonsoft.Json.dll | Bin 401920 -> 0 bytes .../lib/net35/Newtonsoft.Json.xml | 8105 ---------- .../lib/net40/Newtonsoft.Json.dll | Bin 456192 -> 0 bytes .../lib/net40/Newtonsoft.Json.xml | 8380 ---------- .../lib/net45/Newtonsoft.Json.dll | Bin 465408 -> 0 bytes .../lib/net45/Newtonsoft.Json.xml | 8380 ---------- .../lib/netcore45/Newtonsoft.Json.dll | Bin 415744 -> 0 bytes .../lib/netcore45/Newtonsoft.Json.xml | 7936 ---------- .../Newtonsoft.Json.dll | Bin 351232 -> 0 bytes .../Newtonsoft.Json.xml | 7532 --------- .../Newtonsoft.Json.dll | Bin 407040 -> 0 bytes .../Newtonsoft.Json.xml | 7904 ---------- dep/Newtonsoft.Json.5.0.8/tools/install.ps1 | 93 - .../CodeGeneration.LowLevelClient.csproj | 2 +- .../packages.config | 2 +- .../CodeGeneration.YamlTestsRunner.csproj | 2 +- .../packages.config | 2 +- ...Elasticsearch.Net.Connection.Thrift.csproj | 3 + .../packages.config | 2 +- .../Domain/ElasticsearchResponse.cs | 2 +- src/Nest/Nest.csproj | 6 +- src/Nest/Resolvers/PropertyNameResolver.cs | 1 - src/Nest/packages.config | 1 + .../Profiling.Indexing.csproj | 8 +- src/Profiling/Profiling.Indexing/app.config | 2 +- .../Profiling.Indexing/packages.config | 2 +- .../Elasticsearch.Net.JsonNet.csproj | 8 +- .../Elasticsearch.Net.JsonNET/packages.config | 2 +- .../Elasticsearch.Net.Integration.Yaml.csproj | 12 +- .../packages.config | 6 +- .../Connection/RetryTests.cs | 10 +- .../Elasticsearch.Net.Tests.Unit.csproj | 7 +- .../packages.config | 4 +- .../Nest.Tests.Integration/Core/AsyncTests.cs | 34 +- .../IntegrationSetup.cs | 3 - .../Nest.Tests.Integration.csproj | 5 +- .../RawCalls/ReturnTypesTest.cs | 34 +- .../Nest.Tests.Integration/packages.config | 2 +- .../Nest.Tests.MockData.csproj | 12 +- src/Tests/Nest.Tests.MockData/app.config | 2 +- src/Tests/Nest.Tests.MockData/packages.config | 4 +- .../Nest.Tests.Unit/Nest.Tests.Unit.csproj | 13 +- src/Tests/Nest.Tests.Unit/Test.Designer.cs | 4 +- src/Tests/Nest.Tests.Unit/app.config | 6 +- src/Tests/Nest.Tests.Unit/packages.config | 6 +- 68 files changed, 6537 insertions(+), 101143 deletions(-) delete mode 100644 dep/FluentAssertions.2.0.0.1/FluentAssertions.2.0.0.1.nuspec delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.xml delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.xml delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.xml delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.xml delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/sl4/FluentAssertions.Silverlight.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/sl4/FluentAssertions.Silverlight.xml delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.dll delete mode 100644 dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.xml delete mode 100644 dep/NUnit.2.6.1/NUnit.2.6.1.nuspec delete mode 100644 dep/NUnit.2.6.1/lib/nunit.framework.dll create mode 100644 dep/NUnit.2.6.3/lib/nunit.framework.dll rename dep/{NUnit.2.6.1 => NUnit.2.6.3}/lib/nunit.framework.xml (97%) rename dep/{NUnit.2.6.1 => NUnit.2.6.3}/license.txt (91%) delete mode 100644 dep/Newtonsoft.Json.5.0.8/Newtonsoft.Json.5.0.8.nuspec delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net20/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net20/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net35/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net35/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net40/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net40/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net45/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/net45/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/netcore45/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/netcore45/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/portable-net40+sl4+wp7+win8/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/portable-net45+wp80+win8/Newtonsoft.Json.dll delete mode 100644 dep/Newtonsoft.Json.5.0.8/lib/portable-net45+wp80+win8/Newtonsoft.Json.xml delete mode 100644 dep/Newtonsoft.Json.5.0.8/tools/install.ps1 diff --git a/dep/FluentAssertions.2.0.0.1/FluentAssertions.2.0.0.1.nuspec b/dep/FluentAssertions.2.0.0.1/FluentAssertions.2.0.0.1.nuspec deleted file mode 100644 index d88393aa812..00000000000 --- a/dep/FluentAssertions.2.0.0.1/FluentAssertions.2.0.0.1.nuspec +++ /dev/null @@ -1,89 +0,0 @@ - - - - FluentAssertions - 2.0.0.1 - Fluent Assertions - Dennis Doomen, Martin Opdam - Dennis Doomen, Martin Opdam - http://fluentassertions.codeplex.com/license - http://fluentassertions.codeplex.com/ - false - A very extensive set of extension methods that allow you to more naturally specify the expected outcome of a TDD or - BDD-style unit test. Runs on .NET 3.5, 4.0 and 4.5 (Desktop and Windows Store), Silverlight 4 and 5 and Windows Phone 7.5. Supports the unit test frameworks NUnit, XUnit, MBUnit, Gallio and MSpec. - Fluent methods for asserting the result of TDD/BDD specs for .NET 3.5/4.0/4.5 (Desktop and Windows Store), SL 4/5, WP7 (Mango). Supports the unit test frameworks NUnit, XUnit, MBUnit, Gallio and MSpec. - What are the major features - * Added support for .NET 4.5, Windows Phone 7.5 and .NET for Windows Store Apps - * Added support for MBUnit and the Gallio framework - * Added a completely new extensible API for comparing two objects graph for equivalence that will replace the object.ShouldHave() API in the future (issue 11841). - - What's new for collections - * Added (Not)BeInAscendingOrder() and (Not)BeInDescendingOrder() (issue 12103) - * Added IntersectWith(otherCollection) and NotIntersectWith(otherCollection) (issue 12248) - * ContainInOrder() now has an overload that only takes a params object[] argument to support a more fluent syntax in case you don't specify the reason (issue 12313). - * Added ContainSingle(Expression<Func<T, bool=""> predicate>) that asserts there is only a single element in the collection that matches the specified predicate (issue 12313). - * Added support for a lambda that is used for checking the equality of two collections (issue 11925). - * Fixed a bug that occurs when two collections are compared for equality but the collection contains null (issue 12296) - - What's new for strings - * When strings differ in length, it will report the expected and actual lengths as part of the failure messages (issue 12422) - * An ArgumentOutOfRangeException was thrown when asserting a string started with a specific string, but the first string was shorter than the expected string (issue 12293) - - What's new for numbers - * Added support for using Should().Be() on nullable numeric types (issue 11837) - * Added BeOneOf() to verify that the value matching one of the provided values (issue 12016). - * Added support for (nullable) decimals - * BePositive() and BeNegative() now also work for floats and doubles (issue 11946) - - What's new for dates and times - * Added NotBe() - * Added BeOneOf() to verify that the value matching one of the provided values (issue 12016). - * Added BeCloseTo() to assert that a datetime is within a specified number of milliseconds from another datetime value. Usefull for example when your database truncates datetime values (issue 12070). - * If a DateTime value has milliseconds then they will be displayed in an assertion failure message (issue 12072). - - What's new for comparing object graphs - * You can now apply the property equality comparisons to entire collections of objects. It doesn't matter what kind of collections types you use, as long as they contain the same number of objects which properties are the same (issue 11743). - * Included the index of the mismatching object when comparing a collection for structural equality - * An exception was thrown when comparing the properties of an object, and there were cyclic references. You can now configure if you want this to be ignored. - * Added support for comparing references to an interface rather than concrete types (issue 11840). - * Write-only properties are ignored (issue 11808) - * Fixed a stack overflow exception when formatting an object graph containing static cyclic references. - * Fixed an exception that was thrown when formatting an object graph where one of the properties threw an exception. - * Added support for comparing two anonymous types using SharedProperties() (issue 11886). - * The name of a DateTime property was not included in the error message when AllProperties() failed on that property - - What's new for types - * Added the AllTypes class with a static method From(Assembly assembly) as a wrapper around the Types extension method on Assembly (issue 12186). This allows for a more fluent syntax like AllTypes.From(assembly).ThatImplement<SomeInterface>().Should().BeDecoratedWith<SomeAttribute>(); - * Added support for asserting the properties of an attribute have a specific value (issue 12186). - - What other improvements are new - * Fixed an exception when asserting equality of dictionaries that contain nulls (issue 12004). - * The NuGet package will automatically add references to System.Xml and System.Xml.Linq - * Implemented ShouldThrow<TException>() for Func<Task>, to support working with async methods (issue 12148) - * Improved several error messages in XDocument- and XElementAssertions - * All overloads that take a reason have been removed and replaced with optional parameter - * Allowed ShouldRaisePropertyChangeFor(null) to verify that the INotifyPropertyChanged was raised for all properties. - * The list of ValueFormatters on the Verification class can be changed to insert a custom formatter. - * Introduced a mechanism to override the way FA formats objects in failure message by annotating a static method with the [ValueFormatter] attribute (issue 12364). - * Introduced a mechanism so that the failure message of custom extensions can specify the {context} tag. - * NuGet package is now based on NuGet 2.0. - - Breaking changes - * The FluentAssertions.Assertions namespace no longer exists so that all extension methods are always available through the FluentAssertions namespace. Just use a global search-replace to remove all those usage statements. - * Many of the assertion classes have moved into dedicated namespaces. You might have to fix any code that inherits from those classes. - * Remove the obsolete Verify() methods from the Verification class - Copyright Dennis Doomen 2010-2012 - en-US - MSTest xUnit NUnit MSpec Gallio MbUnit TDD BDD Fluent Silverlight - - - - - - - - - - - - \ No newline at end of file diff --git a/dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.dll b/dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.dll deleted file mode 100644 index 2b7cdcd48f630aa530cf713221b45449dd470b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166400 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 diff --git a/dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.xml b/dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.xml deleted file mode 100644 index 1e6978bb7f1..00000000000 --- a/dep/FluentAssertions.2.0.0.1/lib/net35/FluentAssertions.xml +++ /dev/null @@ -1,5761 +0,0 @@ - - - - FluentAssertions - - - - - Finds the first index at which the does not match the - string anymore, including the exact casing. - - - - - Finds the first index at which the does not match the - string anymore, accounting for the specified . - - - - - Gets the quoted three characters at the specified index of a string, including the index itself. - - - - - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. - - - - - Joins a string with one or more other strings using a specified separator. - - - Any string that is empty (including the original string) is ignored. - - - - - Determines whether two objects refer to the same property. - - - - - Finds the property by a case-sensitive name. - - - Returns null if no such property exists. - - - - - Determines whether the specified method has been annotated with a specific attribute. - - - true if the specified method has attribute; otherwise, false. - - - - - Specialized value formatter that looks for static methods in the caller's assembly marked with the - . - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Marks a static method as a kind of for a particular type. - - - - - Contains a number of methods to assert that an yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw any exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - - Initializes a new instance of the class. - - - - - Selection rule that adds all public properties of the subject as far as they are defined on the declared - type. - - - - - Represents a rule that defines which properties of the subject-under-test to include while comparing - two objects for structural equality. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - Type info about the subject. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Selection rule that adds all public properties of the subject based on its run-time type rather than its - declared type. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - General purpose implementation of that uses a predicate to determine whether - this rule applies to a particular property and executes an action to assert equality. - - The type of the subject. - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Provides the required information for executing an equality assertion between a subject and an expectation. - - The type of the subject. - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the value of the - - - - - Gets the value of the expectation object that was matched with the subject using a . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Selection rule that removes a particular property from the structural comparison based on a predicate. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides details about the subject's root or nested property. - - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the full path from the root object until the current object separated by dots. - - - - - Gets a display-friendly representation of the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Provides the run-time details of the class. - - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets or sets a value indicating whether or not the assertion must perform a deep comparison. - - - - - Represents a selection context of a nested property - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Is responsible for the exact run-time behavior of a structural equality comparison. - - The type of the subject. - - - - Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, - and includes the entire object graph. The names of the properties between the subject and expectation must match. - - - - - Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects - or collections. - - - - - Adds all public properties of the subject as far as they are defined on the declared type. - - - - - Adds all public properties of the subject based on its run-time type rather than its declared type. - - - - - Tries to match the properties of the subject with equally named properties on the expectation. Ignores those - properties that don't exist on the expectation. - - - - - Requires the expectation to have properties which are equally named to properties on the subject. - - - - - - Excludes the specified (nested) property from the structural equality check. - - - - - Excludes a (nested) property based on a predicate from the structural equality check. - - - - - Includes the specified property in the equality check. - - - This overrides the default behavior of including all declared properties. - - - - - The assertion to execute when the predicate is met. - - - - - Causes the structural equality check to include nested collections and complex types. - - - - - Causes the structural equality check to ignore any cyclic references. - - - By default, cyclic references within the object graph will cause an exception to be thrown. - - - - - Clears all selection rules, including those that were added by default. - - - - - Clears all matching rules, including those that were added by default. - - - - - Adds a selection rule to the ones allready added by default and which is evaluated after all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets value indicating whether the equality check will include nested collections and complex types. - - - - - Gets value indicating how cyclic references should be handled. By default, it will throw an exception. - - - - - Defines additional overrides when used with - - - - - Allows overriding the way structural equality is applied to (nested) objects of tyoe - - - - - Allows overriding the way structural equality is applied to particular properties. - - - A predicate based on the of the subject that is used to identify the property for which the - override applies. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the subject is considered equal to another object according to the implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is not equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Defines the way compares the expected exception - message with the actual one. - - - - - The message must match exactly, including the casing of the characters. - - - - - The message must match except for the casing of the characters. - - - - - The message must start with the exact text, including the casing of the characters.. - - - - - The message must start with the text except for the casing of the characters. - - - - - The message must contain the exact text. - - - - - The message must contain the text except for the casing of the characters. - - - - - The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. - - - - - Indication of how cyclic references should be handled when validating equality of nested properties. - - - - - Cyclic references will be ignored. - - - - - Cyclic references will result in an exception. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current dictionary has not been initialized yet with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary has been initialized with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches the supplied amount. - - The expected number of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches a condition stated by a predicate. - - The predicate which must be statisfied by the amount of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The expected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current dictionary not to contain all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The unexpected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified key. Keys are compared using - their implementation. - - The expected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified key. - Keys are compared using their implementation. - - The unexpected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified value. Values are compared using - their implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified value. - Values are compared using their implementation. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified . - Keys and values are compared using their implementation. - - The expected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified . - Keys and values are compared using their implementation. - - The unexpected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified for the - supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the correct state. - - - - - Asserts that the is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not equal to the GUID. - - The unexpected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Selection rule that removes a particular property from the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Represents a rule that defines how to map the properties from the subject-under-test with the properties - on the expectation object. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Selection rule that includes a particular property in the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Provides information on a particular property during an assertion for structural equality of two object graphs. - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the value of the - - - - - Requires the expectation object to have a property with the exact same name. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Finds a property of the expectation with the exact same name, but doesn't require it. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Static class that allows for a 'fluent' selection of the types from an . - - - AllTypes.From(myAssembly)
    - .ThatImplement<ISomeInterface>
    - .Should()
    - .BeDecoratedWith<SomeAttribute>() -
    -
    - - - Returns a for selecting the types that are visible outside the - specified . - - The assembly from which to select the types. - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class. - - The method to assert. - - - - Initializes a new instance of the class. - - The methods to assert. - - - - Asserts that the selected methods are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of methods of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select methods. - - - - Initializes a new instance of the class. - - The types from which to select methods. - - - - Only select the methods that return the specified type - - - - - Only select the methods that are decorated with an attribute of the specified type. - - - - - The resulting objects. - - - - - Determines whether the specified method has a special name (like properties and events). - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the methods that are public or internal. - - - - - Only select the methods without a return value - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Is responsible for validating the equality of one or more properties of a subject with another object. - - - - - Provides methods for asserting that the execution time of an satifies certain conditions. - - - - - Initializes a new instance of the class. - - The action of which the execution time must be asserted. - - - - Asserts that the execution time of the operation does not exceed a specified amount of time. - - - The maximum allowed duration. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides methods for asserting that the execution time of an object member satifies certain conditions. - - - - - - Initializes a new instance of the class. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the value of the - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Contains a number of extension methods for floating point . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class, for a single . - - The property to assert. - - - - Initializes a new instance of the class, for a number of objects. - - The properties to assert. - - - - Asserts that the selected properties are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of properties of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select properties. - - - - Initializes a new instance of the class. - - The types from which to select properties. - - - - Only select the properties that are decorated with an attribute of the specified type. - - - - - Only select the properties that return the specified type - - - - - The resulting objects. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the properties that have a public or internal getter. - - - - - Dedicated class for comparing two strings and generating consistent error messages. - - - - - Gets or sets a value indicating whether the subject should not match the pattern. - - - - - Gets or sets a value indicating whether the matching process should ignore any casing difference. - - - - - Extension methods for getting method and property selectors for a type. - - - - - Returns the types that are visible outside the specified . - - - - - Returns a method selector for the current . - - - - - Returns a method selector for the current . - - - - - Returns a property selector for the current . - - - - - Returns a property selector for the current . - - - - - Allows for fluent filtering a list of types. - - - - - The resulting objects. - - - - - Determines whether a type is a subclass of another type, but NOT the same type. - - - - - Determines whether a type implements an interface (but is not the interface itself). - - - - - Determines whether a type is decorated with a particular attribute. - - - - - Determines whether the namespace of type is exactly . - - - - - Determines whether the namespace of type is starts with . - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Contains a number of methods to assert that all s in a - meet certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the attribute. - - The expected attribute - - - - Asserts that the current equals the attribute. - - The expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has the specified value. - - The expected value - - - - Asserts that the current has the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the element. - - The expected element - - - - Asserts that the current equals the element. - - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
    -
    - new DateTime(2011, 3, 10)
    -
    - you can write 3.March(2011)
    -
    - Or even
    -
    - 3.March(2011).At(09, 30) -
    - -
    - - - Returns a new value for the specified and - in the month January. - - - - - Returns a new value for the specified and - in the month February. - - - - - Returns a new value for the specified and - in the month March. - - - - - Returns a new value for the specified and - in the month April. - - - - - Returns a new value for the specified and - in the month May. - - - - - Returns a new value for the specified and - in the month June. - - - - - Returns a new value for the specified and - in the month July. - - - - - Returns a new value for the specified and - in the month August. - - - - - Returns a new value for the specified and - in the month September. - - - - - Returns a new value for the specified and - in the month October. - - - - - Returns a new value for the specified and - in the month November. - - - - - Returns a new value for the specified and - in the month December. - - - - - Returns a new value for the specified and . - - - - - Returns a new value for the specified and time with the specified - , and optionally . - - - - - Returns a new value that is the current before the - specified . - - - - - Returns a new value that is the current after the - specified . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that the time difference of the current is greater than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is equal to the - specified time. - - The expected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is not equal to the - specified time. - - The unexpected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
    -
    - TimeSpan.FromHours(12)
    -
    - you can write
    -
    - 12.Hours()
    -
    - Or even
    -
    - 12.Hours().And(30.Minutes()). -
    - -
    - - - Returns a based on a number of milliseconds. - - - - - Returns a based on a number of seconds. - - - - - Returns a based on a number of seconds, and add the specified - . - - - - - Returns a based on a number of minutes. - - - - - Returns a based on a number of minutes, and add the specified - . - - - - - Returns a based on a number of hours. - - - - - Returns a based on a number of hours, and add the specified - . - - - - - Returns a based on a number of days. - - - - - Returns a based on a number of days, and add the specified - . - - - - - Convenience method for chaining multiple calls to the methods provided by this class. - - - 23.Hours().And(59.Minutes()) - - - - - Contains a number of methods to assert that a reference type object is in the expected state. - - - - - Asserts that the object is of the specified type . - - The expected type of the object. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the object is assignable to a variable of type . - - The type to which the object should be assignable. - The reason why the object should be assignable to the type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Asserts that the value is false. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the number of items in the collection matches the supplied amount. - - The expected number of items in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the collection matches a condition stated by the . - - A predicate that yields the number of items that is expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any duplicate items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any null items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the elements that are not expected. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the unexpected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection only contains items that are assignable to the type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in the specified . - Elements are compared using their implementation. - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - - - Asserts that the collection is a subset of the . - - An with the expected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection is not a subset of the . - - An with the unexpected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Assert that the current collection has the same number of elements as . - - The other collection with the same expected number of elements - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has not been initialized yet with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has been initialized with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has the supplied at the - supplied . - - The index where the element is expected - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection does not contain the supplied item. - - The element that is not expected to be in the collection - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection shares one or more items with the specified . - - The with the expected shared items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not share any items with the specified . - - The to compare to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. - - - - - Provides extension methods for monitoring and querying events. - - - - - Starts monitoring an object for its events. - - Thrown if eventSource is Null. - - - - Asserts that an object has raised a particular event at least once. - - The object exposing the event. - The name of the event that should have been raised. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised a particular event at least once. - - The object exposing the event. - - The name of the event that should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised a particular event. - - The object exposing the event. - - The name of the event that should not be raised. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised a particular event. - - The object exposing the event. - - The name of the event that should not be raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised, or - null to refer to all properties. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that all occurences of the event originated from the . - - - - - Asserts that at least one occurrence of the event had an object matching a predicate. - - - - - Records activity for a single event. - - - - - Records raised events for one event on one object - - - - - Store information about a raised event - - Parameters the event was raised with - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - - The object events are recorded from - The name of the event that's recorded - - - - Enumerate raised events - - - - - Enumerate raised events - - - - - - Called by the auto-generated IL, to record information about a raised event. - - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - Static methods that aid in generic event subscription - - - - - Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder - when invoked. - - - - - Finds the Return Type of a Delegate. - - - - - Returns an Array of Types that make up a delegate's parameter signature. - - - - - Returns an array of types appended with an EventRecorder reference at the beginning. - - - - - Returns T/F Dependent on a Type Being a Delegate. - - - - - Returns the MethodInfo for the Delegate's "Invoke" Method. - - - - - This class is used to store data about an intercepted event - - - - - Default constructor stores the parameters the event was raised with - - - - - Parameters for the event - - - - - Simple dictionary that uses a to the event source as the key. - This should ensure the Garbage Collector can still clean-up the event source object. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Determines whether this instance can handle the specified value. - - The value. - - true if this instance can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - The value for which to create a . - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - Indicates whether the formatter should use line breaks when the specific supports it. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Contains a number of methods to assert that an is in the expectation state. - - - - - Asserts that two collections contain the same items in the same order, where equality is determined using a - predicate. - - - The collection to compare the subject with. - - - A predicate the is used to determine whether two objects should be treated as equal. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains the specified item. - - The expectation item. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection contains some extra items in addition to the original items. - - An of expectation items. - Additional items that are expectation to be contained by the collection. - - - - Asserts that the collection contains at least one item that matches the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection only contains items that match a predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Expects the current collection to contain only a single item matching the specified . - - The predictes that will be used to find the matching items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current collection contains the specified object. Elements are compared - using their implementation. - - An object, or of objects that are expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Provides methods for asserting the execution time of a method or property. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Provides methods for asserting the execution time of a method or property. - - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - The current method or property. - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - The current method or property. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the current . - - - - - - Returns a object that can be used to assert the methods returned by the - current . - - - - - - Returns a object that can be used to assert the - current . - - - - - - Returns a object that can be used to assert the properties returned by the - current . - - - - - - Asserts that the properties of an object matches those of another object. - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - Notice that actual behavior is determined by the instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - - - A reference to the configuration object that can be used - to influence the way the object graphs are compared. You can also provide an alternative instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Safely casts the specified object to the type specified through . - - - Has been introduced to allow casting objects without breaking the fluent API. - - - - - - Contains a number of methods to assert that a is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that the current is exactly equal to the value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is not equal to the value. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is within the specified number of milliseconds (default = 20 ms) - from the specified value. - - - Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, - use . - - - The expected time to compare the actual value with. - - - The maximum amount of milliseconds which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is before the specified value. - - The that the current value is expected to be before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or before the specified value. - - The that the current value is expected to be on or before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is after the specified value. - - The that the current value is expected to be after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or after the specified value. - - The that the current value is expected to be on or after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the year. - - The expected year of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the month. - - The expected month of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the day. - - The expected day of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the hour. - - The expected hour of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the minute. - - The expected minutes of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the second. - - The expected seconds of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Returns a object that can be used to assert that the current - exceeds the specified compared to another . - - - The amount of time that the current should exceed compared to another . - - - - - Returns a object that can be used to assert that the current - is equal to or exceeds the specified compared to another . - - - The amount of time that the current should be equal or exceed compared to - another . - - - - - Returns a object that can be used to assert that the current - differs exactly the specified compared to another . - - - The amount of time that the current should differ exactly compared to another . - - - - - Returns a object that can be used to assert that the current - is within the specified compared to another . - - - The amount of time that the current should be within another . - - - - - Returns a object that can be used to assert that the current - differs at maximum the specified compared to another . - - - The maximum amount of time that the current should differ compared to another . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the correct state. - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - Determines how the expected message is compared with the actual message. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable boolean value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable boolean value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that an object equals another object using its implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object does not equal another object using it's method. - - The unexpected value - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to the exact same object as another object reference. - - The expected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to a different object than another object reference refers to. - - The unexpected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains - the values of all properties. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object can be serialized and deserialized using the XML serializer and that it stills retains - the values of all properties. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Provides methods for selecting one or more properties of an object and comparing them with another object. - - - - - Includes all properties of when comparing the subject with another object using . - - - - - Includes all properties of including those of the run-time type when comparing the subject - with another object using . - - - - - Includes all properties of when comparing the subject with another object using , - except those that the other object does not have. - - - - - Perform recursive property comparison of the child properties for objects that are of incompatible type. - - - Indication of how cyclic references in the nested properties should be handled. By default this will result in an - exception, but if is specified, cyclic references will just be ignored. - - - - - Includes all properties of when comparing the subject with another object using , - except those specified using a property expression. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Excludes the properties specified by the from the comparison. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Includes only those properties of when comparing the subject with another object using - that were specified using a property expression. - - A single property expression to include. - Optional list of additional property expressions to include. - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - The object to compare the current object with - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. - - The expected string. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with - the exception of the casing. - - - The string that the subject is expected to be equivalent to. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not exactly the same as the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to be equivalent to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts exactly with the specified value, - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends exactly with the specified , - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains another (fragment of a) string. - - - The (fragement of a) string that the current string should contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain another (fragment of a) string. - - - The (fragement of a) string that the current string should not contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain the specified string, - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string has the specified length. - - The expected length of the string - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is neither null nor . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is neither null nor nor white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or or white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that two objects differ in the expected way. - - - You can use the and for a more fluent - way of specifying a or a . - - - - - Asserts that a occurs a specified amount of time before another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a occurs a specified amount of time after another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides the logic and the display text for a . - - - - - Contains a number of methods to assert that a meets certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current type is equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is equal to the specified type. - - The expected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Creates an error message in case the specifed type differs from the - type. - - - An empty if the two specified types are the same, or an error message that describes that - the two specified types are not the same. - - - - - Asserts that the current type is not equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is not equal to the specified type. - - The unexpected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - - - - - Gets an object that wraps and executes a conditional or unconditional verification. - - - - - Throws a generic exception in case no other test harness is detected. - - - - - Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Provides a fluent API for verifying an arbitrary condition. - - - - - Represents the phrase that can be used in as a placeholder for the reason of an assertion. - - - - - Initializes a new instance of the class. - - - - - Gets the name or identifier of the current subject, or a default value if the subject is not known. - - - - - Specify the condition that must be satisfied. - - If true the verification will be succesful. - - - - Specify a predicate that with the condition that must be satisfied. - - - - - Specify the reason why you expect the condition to be true. - - - A formatted phrase explaining why the condition should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Define the failure message for the verification. - - - If the contains the text "{reason}", this will be replaced by the reason as - defined through . Only 10 are supported in combination with - a {reason}. - - The format string that represents the failure message. - Optional arguments for the - - - - Indicates that every argument passed into is displayed on a separate line. - - - - - Gets or sets the name of the subject for the next verification. - - -
    -
    diff --git a/dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.dll b/dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.dll deleted file mode 100644 index 0b3d86d247513d5f3f9aa4717e81e19d8af633fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166400 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

    m1eZ{S;NyZH4+ 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 diff --git a/dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.xml b/dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.xml deleted file mode 100644 index 9b604725a44..00000000000 --- a/dep/FluentAssertions.2.0.0.1/lib/net40/FluentAssertions.xml +++ /dev/null @@ -1,5761 +0,0 @@ - - - - FluentAssertions - - - -

    - Initializes a new instance of the class. - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Provides methods for asserting the execution time of a method or property. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Provides methods for asserting the execution time of a method or property. - - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - The current method or property. - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - The current method or property. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the current . - - - - - - Returns a object that can be used to assert the methods returned by the - current . - - - - - - Returns a object that can be used to assert the - current . - - - - - - Returns a object that can be used to assert the properties returned by the - current . - - - - - - Asserts that the properties of an object matches those of another object. - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - Notice that actual behavior is determined by the instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - - - A reference to the configuration object that can be used - to influence the way the object graphs are compared. You can also provide an alternative instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Safely casts the specified object to the type specified through . - - - Has been introduced to allow casting objects without breaking the fluent API. - - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Contains a number of methods to assert that a reference type object is in the expected state. - - - - - Asserts that the object is of the specified type . - - The expected type of the object. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the object is assignable to a variable of type . - - The type to which the object should be assignable. - The reason why the object should be assignable to the type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Gets the object which value is being asserted. - - - - - Asserts that the number of items in the collection matches the supplied amount. - - The expected number of items in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the collection matches a condition stated by the . - - A predicate that yields the number of items that is expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any duplicate items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any null items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the elements that are not expected. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the unexpected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection only contains items that are assignable to the type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in the specified . - Elements are compared using their implementation. - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - - - Asserts that the collection is a subset of the . - - An with the expected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection is not a subset of the . - - An with the unexpected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Assert that the current collection has the same number of elements as . - - The other collection with the same expected number of elements - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has not been initialized yet with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has been initialized with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has the supplied at the - supplied . - - The index where the element is expected - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection does not contain the supplied item. - - The element that is not expected to be in the collection - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection shares one or more items with the specified . - - The with the expected shared items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not share any items with the specified . - - The to compare to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expectation state. - - - - - Asserts that two collections contain the same items in the same order, where equality is determined using a - predicate. - - - The collection to compare the subject with. - - - A predicate the is used to determine whether two objects should be treated as equal. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains the specified item. - - The expectation item. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection contains some extra items in addition to the original items. - - An of expectation items. - Additional items that are expectation to be contained by the collection. - - - - Asserts that the collection contains at least one item that matches the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection only contains items that match a predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Expects the current collection to contain only a single item matching the specified . - - The predictes that will be used to find the matching items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current dictionary has not been initialized yet with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary has been initialized with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches the supplied amount. - - The expected number of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches a condition stated by a predicate. - - The predicate which must be statisfied by the amount of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The expected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current dictionary not to contain all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The unexpected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified key. Keys are compared using - their implementation. - - The expected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified key. - Keys are compared using their implementation. - - The unexpected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified value. Values are compared using - their implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified value. - Values are compared using their implementation. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified . - Keys and values are compared using their implementation. - - The expected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified . - Keys and values are compared using their implementation. - - The unexpected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified for the - supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current collection contains the specified object. Elements are compared - using their implementation. - - An object, or of objects that are expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. - - - - - Finds the first index at which the does not match the - string anymore, including the exact casing. - - - - - Finds the first index at which the does not match the - string anymore, accounting for the specified . - - - - - Gets the quoted three characters at the specified index of a string, including the index itself. - - - - - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. - - - - - Joins a string with one or more other strings using a specified separator. - - - Any string that is empty (including the original string) is ignored. - - - - - Determines whether two objects refer to the same property. - - - - - Finds the property by a case-sensitive name. - - - Returns null if no such property exists. - - - - - Determines whether the specified method has been annotated with a specific attribute. - - - true if the specified method has attribute; otherwise, false. - - - - - Provides extension methods for monitoring and querying events. - - - - - Starts monitoring an object for its events. - - Thrown if eventSource is Null. - - - - Asserts that an object has raised a particular event at least once. - - The object exposing the event. - The name of the event that should have been raised. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised a particular event at least once. - - The object exposing the event. - - The name of the event that should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised a particular event. - - The object exposing the event. - - The name of the event that should not be raised. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised a particular event. - - The object exposing the event. - - The name of the event that should not be raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised, or - null to refer to all properties. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that all occurences of the event originated from the . - - - - - Asserts that at least one occurrence of the event had an object matching a predicate. - - - - - Static methods that aid in generic event subscription - - - - - Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder - when invoked. - - - - - Finds the Return Type of a Delegate. - - - - - Returns an Array of Types that make up a delegate's parameter signature. - - - - - Returns an array of types appended with an EventRecorder reference at the beginning. - - - - - Returns T/F Dependent on a Type Being a Delegate. - - - - - Returns the MethodInfo for the Delegate's "Invoke" Method. - - - - - Records activity for a single event. - - - - - Records raised events for one event on one object - - - - - Store information about a raised event - - Parameters the event was raised with - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - - The object events are recorded from - The name of the event that's recorded - - - - Enumerate raised events - - - - - Enumerate raised events - - - - - - Called by the auto-generated IL, to record information about a raised event. - - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - Simple dictionary that uses a to the event source as the key. - This should ensure the Garbage Collector can still clean-up the event source object. - - - - - This class is used to store data about an intercepted event - - - - - Default constructor stores the parameters the event was raised with - - - - - Parameters for the event - - - - - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - - - - - Gets an object that wraps and executes a conditional or unconditional verification. - - - - - Throws a generic exception in case no other test harness is detected. - - - - - Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Provides a fluent API for verifying an arbitrary condition. - - - - - Represents the phrase that can be used in as a placeholder for the reason of an assertion. - - - - - Initializes a new instance of the class. - - - - - Gets the name or identifier of the current subject, or a default value if the subject is not known. - - - - - Specify the condition that must be satisfied. - - If true the verification will be succesful. - - - - Specify a predicate that with the condition that must be satisfied. - - - - - Specify the reason why you expect the condition to be true. - - - A formatted phrase explaining why the condition should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Define the failure message for the verification. - - - If the contains the text "{reason}", this will be replaced by the reason as - defined through . Only 10 are supported in combination with - a {reason}. - - The format string that represents the failure message. - Optional arguments for the - - - - Indicates that every argument passed into is displayed on a separate line. - - - - - Gets or sets the name of the subject for the next verification. - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
    -
    - new DateTime(2011, 3, 10)
    -
    - you can write 3.March(2011)
    -
    - Or even
    -
    - 3.March(2011).At(09, 30) -
    - -
    - - - Returns a new value for the specified and - in the month January. - - - - - Returns a new value for the specified and - in the month February. - - - - - Returns a new value for the specified and - in the month March. - - - - - Returns a new value for the specified and - in the month April. - - - - - Returns a new value for the specified and - in the month May. - - - - - Returns a new value for the specified and - in the month June. - - - - - Returns a new value for the specified and - in the month July. - - - - - Returns a new value for the specified and - in the month August. - - - - - Returns a new value for the specified and - in the month September. - - - - - Returns a new value for the specified and - in the month October. - - - - - Returns a new value for the specified and - in the month November. - - - - - Returns a new value for the specified and - in the month December. - - - - - Returns a new value for the specified and . - - - - - Returns a new value for the specified and time with the specified - , and optionally . - - - - - Returns a new value that is the current before the - specified . - - - - - Returns a new value that is the current after the - specified . - - - - - Specialized value formatter that looks for static methods in the caller's assembly marked with the - . - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Determines whether this instance can handle the specified value. - - The value. - - true if this instance can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - The value for which to create a . - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - Indicates whether the formatter should use line breaks when the specific supports it. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Marks a static method as a kind of for a particular type. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Contains a number of extension methods for floating point . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the subject is considered equal to another object according to the implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is not equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Asserts that the value is false. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Defines the way compares the expected exception - message with the actual one. - - - - - The message must match exactly, including the casing of the characters. - - - - - The message must match except for the casing of the characters. - - - - - The message must start with the exact text, including the casing of the characters.. - - - - - The message must start with the text except for the casing of the characters. - - - - - The message must contain the exact text. - - - - - The message must contain the text except for the casing of the characters. - - - - - The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. - - - - - Contains a number of methods to assert that a is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that the current is exactly equal to the value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is not equal to the value. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is within the specified number of milliseconds (default = 20 ms) - from the specified value. - - - Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, - use . - - - The expected time to compare the actual value with. - - - The maximum amount of milliseconds which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is before the specified value. - - The that the current value is expected to be before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or before the specified value. - - The that the current value is expected to be on or before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is after the specified value. - - The that the current value is expected to be after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or after the specified value. - - The that the current value is expected to be on or after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the year. - - The expected year of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the month. - - The expected month of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the day. - - The expected day of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the hour. - - The expected hour of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the minute. - - The expected minutes of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the second. - - The expected seconds of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Returns a object that can be used to assert that the current - exceeds the specified compared to another . - - - The amount of time that the current should exceed compared to another . - - - - - Returns a object that can be used to assert that the current - is equal to or exceeds the specified compared to another . - - - The amount of time that the current should be equal or exceed compared to - another . - - - - - Returns a object that can be used to assert that the current - differs exactly the specified compared to another . - - - The amount of time that the current should differ exactly compared to another . - - - - - Returns a object that can be used to assert that the current - is within the specified compared to another . - - - The amount of time that the current should be within another . - - - - - Returns a object that can be used to assert that the current - differs at maximum the specified compared to another . - - - The maximum amount of time that the current should differ compared to another . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the correct state. - - - - - Asserts that the is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not equal to the GUID. - - The unexpected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable boolean value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable boolean value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that the time difference of the current is greater than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is equal to the - specified time. - - The expected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is not equal to the - specified time. - - The unexpected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that an object equals another object using its implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object does not equal another object using it's method. - - The unexpected value - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to the exact same object as another object reference. - - The expected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to a different object than another object reference refers to. - - The unexpected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains - the values of all properties. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object can be serialized and deserialized using the XML serializer and that it stills retains - the values of all properties. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. - - The expected string. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with - the exception of the casing. - - - The string that the subject is expected to be equivalent to. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not exactly the same as the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to be equivalent to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts exactly with the specified value, - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends exactly with the specified , - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains another (fragment of a) string. - - - The (fragement of a) string that the current string should contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain another (fragment of a) string. - - - The (fragement of a) string that the current string should not contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain the specified string, - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string has the specified length. - - The expected length of the string - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is neither null nor . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is neither null nor nor white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or or white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the object which value is being asserted. - - - - - Dedicated class for comparing two strings and generating consistent error messages. - - - - - Gets or sets a value indicating whether the subject should not match the pattern. - - - - - Gets or sets a value indicating whether the matching process should ignore any casing difference. - - - - - Contains a number of methods to assert that two objects differ in the expected way. - - - You can use the and for a more fluent - way of specifying a or a . - - - - - Asserts that a occurs a specified amount of time before another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a occurs a specified amount of time after another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides the logic and the display text for a . - - - - - Contains a number of methods to assert that an yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw any exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - - Contains a number of methods to assert that an is in the correct state. - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - Determines how the expected message is compared with the actual message. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - - - - Provides methods for asserting that the execution time of an satifies certain conditions. - - - - - Initializes a new instance of the class. - - The action of which the execution time must be asserted. - - - - Asserts that the execution time of the operation does not exceed a specified amount of time. - - - The maximum allowed duration. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides methods for asserting that the execution time of an object member satifies certain conditions. - - - - - - Initializes a new instance of the class. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - - - Selection rule that adds all public properties of the subject as far as they are defined on the declared - type. - - - - - Represents a rule that defines which properties of the subject-under-test to include while comparing - two objects for structural equality. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - Type info about the subject. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Selection rule that adds all public properties of the subject based on its run-time type rather than its - declared type. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - General purpose implementation of that uses a predicate to determine whether - this rule applies to a particular property and executes an action to assert equality. - - The type of the subject. - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Provides the required information for executing an equality assertion between a subject and an expectation. - - The type of the subject. - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the value of the - - - - - Gets the value of the expectation object that was matched with the subject using a . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Selection rule that removes a particular property from the structural comparison based on a predicate. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides details about the subject's root or nested property. - - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the full path from the root object until the current object separated by dots. - - - - - Gets a display-friendly representation of the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Represents a selection context of a nested property - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Is responsible for the exact run-time behavior of a structural equality comparison. - - The type of the subject. - - - - Provides the run-time details of the class. - - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets or sets a value indicating whether or not the assertion must perform a deep comparison. - - - - - Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, - and includes the entire object graph. The names of the properties between the subject and expectation must match. - - - - - Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects - or collections. - - - - - Adds all public properties of the subject as far as they are defined on the declared type. - - - - - Adds all public properties of the subject based on its run-time type rather than its declared type. - - - - - Tries to match the properties of the subject with equally named properties on the expectation. Ignores those - properties that don't exist on the expectation. - - - - - Requires the expectation to have properties which are equally named to properties on the subject. - - - - - - Excludes the specified (nested) property from the structural equality check. - - - - - Excludes a (nested) property based on a predicate from the structural equality check. - - - - - Includes the specified property in the equality check. - - - This overrides the default behavior of including all declared properties. - - - - - The assertion to execute when the predicate is met. - - - - - Causes the structural equality check to include nested collections and complex types. - - - - - Causes the structural equality check to ignore any cyclic references. - - - By default, cyclic references within the object graph will cause an exception to be thrown. - - - - - Clears all selection rules, including those that were added by default. - - - - - Clears all matching rules, including those that were added by default. - - - - - Adds a selection rule to the ones allready added by default and which is evaluated after all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets value indicating whether the equality check will include nested collections and complex types. - - - - - Gets value indicating how cyclic references should be handled. By default, it will throw an exception. - - - - - Defines additional overrides when used with - - - - - Allows overriding the way structural equality is applied to (nested) objects of tyoe - - - - - Allows overriding the way structural equality is applied to particular properties. - - - A predicate based on the of the subject that is used to identify the property for which the - override applies. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Indication of how cyclic references should be handled when validating equality of nested properties. - - - - - Cyclic references will be ignored. - - - - - Cyclic references will result in an exception. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Selection rule that removes a particular property from the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Represents a rule that defines how to map the properties from the subject-under-test with the properties - on the expectation object. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Selection rule that includes a particular property in the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Provides information on a particular property during an assertion for structural equality of two object graphs. - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the value of the - - - - - Requires the expectation object to have a property with the exact same name. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides methods for selecting one or more properties of an object and comparing them with another object. - - - - - Includes all properties of when comparing the subject with another object using . - - - - - Includes all properties of including those of the run-time type when comparing the subject - with another object using . - - - - - Includes all properties of when comparing the subject with another object using , - except those that the other object does not have. - - - - - Perform recursive property comparison of the child properties for objects that are of incompatible type. - - - Indication of how cyclic references in the nested properties should be handled. By default this will result in an - exception, but if is specified, cyclic references will just be ignored. - - - - - Includes all properties of when comparing the subject with another object using , - except those specified using a property expression. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Excludes the properties specified by the from the comparison. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Includes only those properties of when comparing the subject with another object using - that were specified using a property expression. - - A single property expression to include. - Optional list of additional property expressions to include. - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - The object to compare the current object with - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the value of the - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Gets a verification object associated with the current and . - - - - - Is responsible for validating the equality of one or more properties of a subject with another object. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Finds a property of the expectation with the exact same name, but doesn't require it. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
    -
    - TimeSpan.FromHours(12)
    -
    - you can write
    -
    - 12.Hours()
    -
    - Or even
    -
    - 12.Hours().And(30.Minutes()). -
    - -
    - - - Returns a based on a number of milliseconds. - - - - - Returns a based on a number of seconds. - - - - - Returns a based on a number of seconds, and add the specified - . - - - - - Returns a based on a number of minutes. - - - - - Returns a based on a number of minutes, and add the specified - . - - - - - Returns a based on a number of hours. - - - - - Returns a based on a number of hours, and add the specified - . - - - - - Returns a based on a number of days. - - - - - Returns a based on a number of days, and add the specified - . - - - - - Convenience method for chaining multiple calls to the methods provided by this class. - - - 23.Hours().And(59.Minutes()) - - - - - Extension methods for getting method and property selectors for a type. - - - - - Returns the types that are visible outside the specified . - - - - - Returns a method selector for the current . - - - - - Returns a method selector for the current . - - - - - Returns a property selector for the current . - - - - - Returns a property selector for the current . - - - - - Static class that allows for a 'fluent' selection of the types from an . - - - AllTypes.From(myAssembly)
    - .ThatImplement<ISomeInterface>
    - .Should()
    - .BeDecoratedWith<SomeAttribute>() -
    -
    - - - Returns a for selecting the types that are visible outside the - specified . - - The assembly from which to select the types. - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class. - - The method to assert. - - - - Initializes a new instance of the class. - - The methods to assert. - - - - Asserts that the selected methods are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of methods of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select methods. - - - - Initializes a new instance of the class. - - The types from which to select methods. - - - - Only select the methods that return the specified type - - - - - Only select the methods that are decorated with an attribute of the specified type. - - - - - The resulting objects. - - - - - Determines whether the specified method has a special name (like properties and events). - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the methods that are public or internal. - - - - - Only select the methods without a return value - - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class, for a single . - - The property to assert. - - - - Initializes a new instance of the class, for a number of objects. - - The properties to assert. - - - - Asserts that the selected properties are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of properties of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select properties. - - - - Initializes a new instance of the class. - - The types from which to select properties. - - - - Only select the properties that are decorated with an attribute of the specified type. - - - - - Only select the properties that return the specified type - - - - - The resulting objects. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the properties that have a public or internal getter. - - - - - Contains a number of methods to assert that a meets certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current type is equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is equal to the specified type. - - The expected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Creates an error message in case the specifed type differs from the - type. - - - An empty if the two specified types are the same, or an error message that describes that - the two specified types are not the same. - - - - - Asserts that the current type is not equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is not equal to the specified type. - - The unexpected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent filtering a list of types. - - - - - The resulting objects. - - - - - Determines whether a type is a subclass of another type, but NOT the same type. - - - - - Determines whether a type implements an interface (but is not the interface itself). - - - - - Determines whether a type is decorated with a particular attribute. - - - - - Determines whether the namespace of type is exactly . - - - - - Determines whether the namespace of type is starts with . - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Contains a number of methods to assert that all s in a - meet certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the attribute. - - The expected attribute - - - - Asserts that the current equals the attribute. - - The expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has the specified value. - - The expected value - - - - Asserts that the current has the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the element. - - The expected element - - - - Asserts that the current equals the element. - - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - diff --git a/dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.dll b/dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.dll deleted file mode 100644 index b7b134705a890a4234642a36afff4ee047467c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167424 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
      &O)o1LKZI_I~i}-iu5!0I-tFK28j|mAR(=N@S*c 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 K!~RfX;Qs;*aQ0*X diff --git a/dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.xml b/dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.xml deleted file mode 100644 index 3c7b84b08b9..00000000000 --- a/dep/FluentAssertions.2.0.0.1/lib/net45/FluentAssertions.xml +++ /dev/null @@ -1,5802 +0,0 @@ - - - - FluentAssertions - - - -

      - Initializes a new instance of the class. - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Provides methods for asserting the execution time of a method or property. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Provides methods for asserting the execution time of a method or property. - - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - The current method or property. - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - The current method or property. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the current . - - - - - - Returns a object that can be used to assert the methods returned by the - current . - - - - - - Returns a object that can be used to assert the - current . - - - - - - Returns a object that can be used to assert the properties returned by the - current . - - - - - - Asserts that the properties of an object matches those of another object. - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - Notice that actual behavior is determined by the instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - - - A reference to the configuration object that can be used - to influence the way the object graphs are compared. You can also provide an alternative instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Safely casts the specified object to the type specified through . - - - Has been introduced to allow casting objects without breaking the fluent API. - - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Contains a number of methods to assert that a reference type object is in the expected state. - - - - - Asserts that the object is of the specified type . - - The expected type of the object. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the object is assignable to a variable of type . - - The type to which the object should be assignable. - The reason why the object should be assignable to the type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Gets the object which value is being asserted. - - - - - Asserts that the number of items in the collection matches the supplied amount. - - The expected number of items in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the collection matches a condition stated by the . - - A predicate that yields the number of items that is expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any duplicate items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any null items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the elements that are not expected. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the unexpected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection only contains items that are assignable to the type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in the specified . - Elements are compared using their implementation. - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - - - Asserts that the collection is a subset of the . - - An with the expected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection is not a subset of the . - - An with the unexpected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Assert that the current collection has the same number of elements as . - - The other collection with the same expected number of elements - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has not been initialized yet with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has been initialized with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has the supplied at the - supplied . - - The index where the element is expected - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection does not contain the supplied item. - - The element that is not expected to be in the collection - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection shares one or more items with the specified . - - The with the expected shared items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not share any items with the specified . - - The to compare to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expectation state. - - - - - Asserts that two collections contain the same items in the same order, where equality is determined using a - predicate. - - - The collection to compare the subject with. - - - A predicate the is used to determine whether two objects should be treated as equal. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains the specified item. - - The expectation item. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection contains some extra items in addition to the original items. - - An of expectation items. - Additional items that are expectation to be contained by the collection. - - - - Asserts that the collection contains at least one item that matches the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection only contains items that match a predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Expects the current collection to contain only a single item matching the specified . - - The predictes that will be used to find the matching items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current dictionary has not been initialized yet with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary has been initialized with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches the supplied amount. - - The expected number of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches a condition stated by a predicate. - - The predicate which must be statisfied by the amount of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The expected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current dictionary not to contain all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The unexpected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified key. Keys are compared using - their implementation. - - The expected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified key. - Keys are compared using their implementation. - - The unexpected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified value. Values are compared using - their implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified value. - Values are compared using their implementation. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified . - Keys and values are compared using their implementation. - - The expected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified . - Keys and values are compared using their implementation. - - The unexpected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified for the - supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current collection contains the specified object. Elements are compared - using their implementation. - - An object, or of objects that are expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. - - - - - Finds the first index at which the does not match the - string anymore, including the exact casing. - - - - - Finds the first index at which the does not match the - string anymore, accounting for the specified . - - - - - Gets the quoted three characters at the specified index of a string, including the index itself. - - - - - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. - - - - - Joins a string with one or more other strings using a specified separator. - - - Any string that is empty (including the original string) is ignored. - - - - - Determines whether two objects refer to the same property. - - - - - Finds the property by a case-sensitive name. - - - Returns null if no such property exists. - - - - - Determines whether the specified method has been annotated with a specific attribute. - - - true if the specified method has attribute; otherwise, false. - - - - - Provides extension methods for monitoring and querying events. - - - - - Starts monitoring an object for its events. - - Thrown if eventSource is Null. - - - - Asserts that an object has raised a particular event at least once. - - The object exposing the event. - The name of the event that should have been raised. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised a particular event at least once. - - The object exposing the event. - - The name of the event that should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised a particular event. - - The object exposing the event. - - The name of the event that should not be raised. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised a particular event. - - The object exposing the event. - - The name of the event that should not be raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised, or - null to refer to all properties. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that all occurences of the event originated from the . - - - - - Asserts that at least one occurrence of the event had an object matching a predicate. - - - - - Static methods that aid in generic event subscription - - - - - Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder - when invoked. - - - - - Finds the Return Type of a Delegate. - - - - - Returns an Array of Types that make up a delegate's parameter signature. - - - - - Returns an array of types appended with an EventRecorder reference at the beginning. - - - - - Returns T/F Dependent on a Type Being a Delegate. - - - - - Returns the MethodInfo for the Delegate's "Invoke" Method. - - - - - Records activity for a single event. - - - - - Records raised events for one event on one object - - - - - Store information about a raised event - - Parameters the event was raised with - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - - The object events are recorded from - The name of the event that's recorded - - - - Enumerate raised events - - - - - Enumerate raised events - - - - - - Called by the auto-generated IL, to record information about a raised event. - - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - Simple dictionary that uses a to the event source as the key. - This should ensure the Garbage Collector can still clean-up the event source object. - - - - - This class is used to store data about an intercepted event - - - - - Default constructor stores the parameters the event was raised with - - - - - Parameters for the event - - - - - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - - - - - Gets an object that wraps and executes a conditional or unconditional verification. - - - - - Throws a generic exception in case no other test harness is detected. - - - - - Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Provides a fluent API for verifying an arbitrary condition. - - - - - Represents the phrase that can be used in as a placeholder for the reason of an assertion. - - - - - Initializes a new instance of the class. - - - - - Gets the name or identifier of the current subject, or a default value if the subject is not known. - - - - - Specify the condition that must be satisfied. - - If true the verification will be succesful. - - - - Specify a predicate that with the condition that must be satisfied. - - - - - Specify the reason why you expect the condition to be true. - - - A formatted phrase explaining why the condition should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Define the failure message for the verification. - - - If the contains the text "{reason}", this will be replaced by the reason as - defined through . Only 10 are supported in combination with - a {reason}. - - The format string that represents the failure message. - Optional arguments for the - - - - Indicates that every argument passed into is displayed on a separate line. - - - - - Gets or sets the name of the subject for the next verification. - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - new DateTime(2011, 3, 10)
      -
      - you can write 3.March(2011)
      -
      - Or even
      -
      - 3.March(2011).At(09, 30) -
      - -
      - - - Returns a new value for the specified and - in the month January. - - - - - Returns a new value for the specified and - in the month February. - - - - - Returns a new value for the specified and - in the month March. - - - - - Returns a new value for the specified and - in the month April. - - - - - Returns a new value for the specified and - in the month May. - - - - - Returns a new value for the specified and - in the month June. - - - - - Returns a new value for the specified and - in the month July. - - - - - Returns a new value for the specified and - in the month August. - - - - - Returns a new value for the specified and - in the month September. - - - - - Returns a new value for the specified and - in the month October. - - - - - Returns a new value for the specified and - in the month November. - - - - - Returns a new value for the specified and - in the month December. - - - - - Returns a new value for the specified and . - - - - - Returns a new value for the specified and time with the specified - , and optionally . - - - - - Returns a new value that is the current before the - specified . - - - - - Returns a new value that is the current after the - specified . - - - - - Specialized value formatter that looks for static methods in the caller's assembly marked with the - . - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Determines whether this instance can handle the specified value. - - The value. - - true if this instance can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - The value for which to create a . - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - Indicates whether the formatter should use line breaks when the specific supports it. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Marks a static method as a kind of for a particular type. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Contains a number of extension methods for floating point . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the subject is considered equal to another object according to the implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is not equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Asserts that the value is false. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Defines the way compares the expected exception - message with the actual one. - - - - - The message must match exactly, including the casing of the characters. - - - - - The message must match except for the casing of the characters. - - - - - The message must start with the exact text, including the casing of the characters.. - - - - - The message must start with the text except for the casing of the characters. - - - - - The message must contain the exact text. - - - - - The message must contain the text except for the casing of the characters. - - - - - The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. - - - - - Contains a number of methods to assert that a is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that the current is exactly equal to the value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is not equal to the value. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is within the specified number of milliseconds (default = 20 ms) - from the specified value. - - - Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, - use . - - - The expected time to compare the actual value with. - - - The maximum amount of milliseconds which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is before the specified value. - - The that the current value is expected to be before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or before the specified value. - - The that the current value is expected to be on or before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is after the specified value. - - The that the current value is expected to be after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or after the specified value. - - The that the current value is expected to be on or after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the year. - - The expected year of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the month. - - The expected month of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the day. - - The expected day of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the hour. - - The expected hour of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the minute. - - The expected minutes of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the second. - - The expected seconds of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Returns a object that can be used to assert that the current - exceeds the specified compared to another . - - - The amount of time that the current should exceed compared to another . - - - - - Returns a object that can be used to assert that the current - is equal to or exceeds the specified compared to another . - - - The amount of time that the current should be equal or exceed compared to - another . - - - - - Returns a object that can be used to assert that the current - differs exactly the specified compared to another . - - - The amount of time that the current should differ exactly compared to another . - - - - - Returns a object that can be used to assert that the current - is within the specified compared to another . - - - The amount of time that the current should be within another . - - - - - Returns a object that can be used to assert that the current - differs at maximum the specified compared to another . - - - The maximum amount of time that the current should differ compared to another . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the correct state. - - - - - Asserts that the is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not equal to the GUID. - - The unexpected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable boolean value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable boolean value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that the time difference of the current is greater than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is equal to the - specified time. - - The expected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is not equal to the - specified time. - - The unexpected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that an object equals another object using its implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object does not equal another object using it's method. - - The unexpected value - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to the exact same object as another object reference. - - The expected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to a different object than another object reference refers to. - - The unexpected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object can be serialized and deserialized using the binary serializer and that it stills retains - the values of all properties. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object can be serialized and deserialized using the XML serializer and that it stills retains - the values of all properties. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. - - The expected string. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with - the exception of the casing. - - - The string that the subject is expected to be equivalent to. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not exactly the same as the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to be equivalent to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts exactly with the specified value, - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends exactly with the specified , - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains another (fragment of a) string. - - - The (fragement of a) string that the current string should contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain another (fragment of a) string. - - - The (fragement of a) string that the current string should not contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain the specified string, - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string has the specified length. - - The expected length of the string - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is neither null nor . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is neither null nor nor white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or or white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the object which value is being asserted. - - - - - Dedicated class for comparing two strings and generating consistent error messages. - - - - - Gets or sets a value indicating whether the subject should not match the pattern. - - - - - Gets or sets a value indicating whether the matching process should ignore any casing difference. - - - - - Contains a number of methods to assert that two objects differ in the expected way. - - - You can use the and for a more fluent - way of specifying a or a . - - - - - Asserts that a occurs a specified amount of time before another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a occurs a specified amount of time after another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides the logic and the display text for a . - - - - - Contains a number of methods to assert that an yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw any exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - - Contains a number of methods to assert that an is in the correct state. - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - Determines how the expected message is compared with the actual message. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - - - - Provides methods for asserting that the execution time of an satifies certain conditions. - - - - - Initializes a new instance of the class. - - The action of which the execution time must be asserted. - - - - Asserts that the execution time of the operation does not exceed a specified amount of time. - - - The maximum allowed duration. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides methods for asserting that the execution time of an object member satifies certain conditions. - - - - - - Initializes a new instance of the class. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - - - Selection rule that adds all public properties of the subject as far as they are defined on the declared - type. - - - - - Represents a rule that defines which properties of the subject-under-test to include while comparing - two objects for structural equality. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - Type info about the subject. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Selection rule that adds all public properties of the subject based on its run-time type rather than its - declared type. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - General purpose implementation of that uses a predicate to determine whether - this rule applies to a particular property and executes an action to assert equality. - - The type of the subject. - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Provides the required information for executing an equality assertion between a subject and an expectation. - - The type of the subject. - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the value of the - - - - - Gets the value of the expectation object that was matched with the subject using a . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Selection rule that removes a particular property from the structural comparison based on a predicate. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides details about the subject's root or nested property. - - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the full path from the root object until the current object separated by dots. - - - - - Gets a display-friendly representation of the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Represents a selection context of a nested property - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Is responsible for the exact run-time behavior of a structural equality comparison. - - The type of the subject. - - - - Provides the run-time details of the class. - - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets or sets a value indicating whether or not the assertion must perform a deep comparison. - - - - - Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, - and includes the entire object graph. The names of the properties between the subject and expectation must match. - - - - - Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects - or collections. - - - - - Adds all public properties of the subject as far as they are defined on the declared type. - - - - - Adds all public properties of the subject based on its run-time type rather than its declared type. - - - - - Tries to match the properties of the subject with equally named properties on the expectation. Ignores those - properties that don't exist on the expectation. - - - - - Requires the expectation to have properties which are equally named to properties on the subject. - - - - - - Excludes the specified (nested) property from the structural equality check. - - - - - Excludes a (nested) property based on a predicate from the structural equality check. - - - - - Includes the specified property in the equality check. - - - This overrides the default behavior of including all declared properties. - - - - - The assertion to execute when the predicate is met. - - - - - Causes the structural equality check to include nested collections and complex types. - - - - - Causes the structural equality check to ignore any cyclic references. - - - By default, cyclic references within the object graph will cause an exception to be thrown. - - - - - Clears all selection rules, including those that were added by default. - - - - - Clears all matching rules, including those that were added by default. - - - - - Adds a selection rule to the ones allready added by default and which is evaluated after all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets value indicating whether the equality check will include nested collections and complex types. - - - - - Gets value indicating how cyclic references should be handled. By default, it will throw an exception. - - - - - Defines additional overrides when used with - - - - - Allows overriding the way structural equality is applied to (nested) objects of tyoe - - - - - Allows overriding the way structural equality is applied to particular properties. - - - A predicate based on the of the subject that is used to identify the property for which the - override applies. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Indication of how cyclic references should be handled when validating equality of nested properties. - - - - - Cyclic references will be ignored. - - - - - Cyclic references will result in an exception. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Selection rule that removes a particular property from the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Represents a rule that defines how to map the properties from the subject-under-test with the properties - on the expectation object. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Selection rule that includes a particular property in the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Provides information on a particular property during an assertion for structural equality of two object graphs. - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the value of the - - - - - Requires the expectation object to have a property with the exact same name. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides methods for selecting one or more properties of an object and comparing them with another object. - - - - - Includes all properties of when comparing the subject with another object using . - - - - - Includes all properties of including those of the run-time type when comparing the subject - with another object using . - - - - - Includes all properties of when comparing the subject with another object using , - except those that the other object does not have. - - - - - Perform recursive property comparison of the child properties for objects that are of incompatible type. - - - Indication of how cyclic references in the nested properties should be handled. By default this will result in an - exception, but if is specified, cyclic references will just be ignored. - - - - - Includes all properties of when comparing the subject with another object using , - except those specified using a property expression. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Excludes the properties specified by the from the comparison. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Includes only those properties of when comparing the subject with another object using - that were specified using a property expression. - - A single property expression to include. - Optional list of additional property expressions to include. - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - The object to compare the current object with - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the value of the - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Gets a verification object associated with the current and . - - - - - Is responsible for validating the equality of one or more properties of a subject with another object. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Finds a property of the expectation with the exact same name, but doesn't require it. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - TimeSpan.FromHours(12)
      -
      - you can write
      -
      - 12.Hours()
      -
      - Or even
      -
      - 12.Hours().And(30.Minutes()). -
      - -
      - - - Returns a based on a number of milliseconds. - - - - - Returns a based on a number of seconds. - - - - - Returns a based on a number of seconds, and add the specified - . - - - - - Returns a based on a number of minutes. - - - - - Returns a based on a number of minutes, and add the specified - . - - - - - Returns a based on a number of hours. - - - - - Returns a based on a number of hours, and add the specified - . - - - - - Returns a based on a number of days. - - - - - Returns a based on a number of days, and add the specified - . - - - - - Convenience method for chaining multiple calls to the methods provided by this class. - - - 23.Hours().And(59.Minutes()) - - - - - Extension methods for getting method and property selectors for a type. - - - - - Returns the types that are visible outside the specified . - - - - - Returns a method selector for the current . - - - - - Returns a method selector for the current . - - - - - Returns a property selector for the current . - - - - - Returns a property selector for the current . - - - - - Static class that allows for a 'fluent' selection of the types from an . - - - AllTypes.From(myAssembly)
      - .ThatImplement<ISomeInterface>
      - .Should()
      - .BeDecoratedWith<SomeAttribute>() -
      -
      - - - Returns a for selecting the types that are visible outside the - specified . - - The assembly from which to select the types. - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class. - - The method to assert. - - - - Initializes a new instance of the class. - - The methods to assert. - - - - Asserts that the selected methods are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of methods of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select methods. - - - - Initializes a new instance of the class. - - The types from which to select methods. - - - - Only select the methods that return the specified type - - - - - Only select the methods that are decorated with an attribute of the specified type. - - - - - The resulting objects. - - - - - Determines whether the specified method has a special name (like properties and events). - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the methods that are public or internal. - - - - - Only select the methods without a return value - - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class, for a single . - - The property to assert. - - - - Initializes a new instance of the class, for a number of objects. - - The properties to assert. - - - - Asserts that the selected properties are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of properties of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select properties. - - - - Initializes a new instance of the class. - - The types from which to select properties. - - - - Only select the properties that are decorated with an attribute of the specified type. - - - - - Only select the properties that return the specified type - - - - - The resulting objects. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the properties that have a public or internal getter. - - - - - Contains a number of methods to assert that a meets certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current type is equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is equal to the specified type. - - The expected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Creates an error message in case the specifed type differs from the - type. - - - An empty if the two specified types are the same, or an error message that describes that - the two specified types are not the same. - - - - - Asserts that the current type is not equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is not equal to the specified type. - - The unexpected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent filtering a list of types. - - - - - The resulting objects. - - - - - Determines whether a type is a subclass of another type, but NOT the same type. - - - - - Determines whether a type implements an interface (but is not the interface itself). - - - - - Determines whether a type is decorated with a particular attribute. - - - - - Determines whether the namespace of type is exactly . - - - - - Determines whether the namespace of type is starts with . - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Contains a number of methods to assert that all s in a - meet certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the attribute. - - The expected attribute - - - - Asserts that the current equals the attribute. - - The expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has the specified value. - - The expected value - - - - Asserts that the current has the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the element. - - The expected element - - - - Asserts that the current equals the element. - - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an asynchronous method yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - diff --git a/dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.dll b/dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.dll deleted file mode 100644 index 3e8b303a260a8a0a32eb3c8a0a56b6b2f9d808ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155136 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 im1=nqaT%mN=fP2ZzxFZ3TD8NVrOcn;btW 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 diff --git a/dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.xml b/dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.xml deleted file mode 100644 index a72e912fba9..00000000000 --- a/dep/FluentAssertions.2.0.0.1/lib/sl4-windowsphone71/FluentAssertions.WindowsPhone.xml +++ /dev/null @@ -1,5430 +0,0 @@ - - - - FluentAssertions.WindowsPhone - - - - - Initializes a new instance of the class. - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - The current method or property. - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - The current method or property. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the methods returned by the - current . - - - - - - Returns a object that can be used to assert the properties returned by the - current . - - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - Notice that actual behavior is determined by the instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - - - A reference to the configuration object that can be used - to influence the way the object graphs are compared. You can also provide an alternative instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Safely casts the specified object to the type specified through . - - - Has been introduced to allow casting objects without breaking the fluent API. - - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Contains a number of methods to assert that a reference type object is in the expected state. - - - - - Asserts that the object is of the specified type . - - The expected type of the object. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the object is assignable to a variable of type . - - The type to which the object should be assignable. - The reason why the object should be assignable to the type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Gets the object which value is being asserted. - - - - - Asserts that the number of items in the collection matches the supplied amount. - - The expected number of items in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the collection matches a condition stated by the . - - A predicate that yields the number of items that is expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any duplicate items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any null items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the elements that are not expected. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the unexpected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection only contains items that are assignable to the type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in the specified . - Elements are compared using their implementation. - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - - - Asserts that the collection is a subset of the . - - An with the expected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection is not a subset of the . - - An with the unexpected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Assert that the current collection has the same number of elements as . - - The other collection with the same expected number of elements - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has not been initialized yet with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has been initialized with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has the supplied at the - supplied . - - The index where the element is expected - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection does not contain the supplied item. - - The element that is not expected to be in the collection - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection shares one or more items with the specified . - - The with the expected shared items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not share any items with the specified . - - The to compare to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expectation state. - - - - - Asserts that two collections contain the same items in the same order, where equality is determined using a - predicate. - - - The collection to compare the subject with. - - - A predicate the is used to determine whether two objects should be treated as equal. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains the specified item. - - The expectation item. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection contains some extra items in addition to the original items. - - An of expectation items. - Additional items that are expectation to be contained by the collection. - - - - Asserts that the collection contains at least one item that matches the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection only contains items that match a predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Expects the current collection to contain only a single item matching the specified . - - The predictes that will be used to find the matching items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current dictionary has not been initialized yet with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary has been initialized with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches the supplied amount. - - The expected number of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches a condition stated by a predicate. - - The predicate which must be statisfied by the amount of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The expected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current dictionary not to contain all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The unexpected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified key. Keys are compared using - their implementation. - - The expected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified key. - Keys are compared using their implementation. - - The unexpected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified value. Values are compared using - their implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified value. - Values are compared using their implementation. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified . - Keys and values are compared using their implementation. - - The expected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified . - Keys and values are compared using their implementation. - - The unexpected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified for the - supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current collection contains the specified object. Elements are compared - using their implementation. - - An object, or of objects that are expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. - - - - - Finds the first index at which the does not match the - string anymore, including the exact casing. - - - - - Finds the first index at which the does not match the - string anymore, accounting for the specified . - - - - - Gets the quoted three characters at the specified index of a string, including the index itself. - - - - - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. - - - - - Joins a string with one or more other strings using a specified separator. - - - Any string that is empty (including the original string) is ignored. - - - - - Determines whether two objects refer to the same property. - - - - - Finds the property by a case-sensitive name. - - - Returns null if no such property exists. - - - - - Determines whether the specified method has been annotated with a specific attribute. - - - true if the specified method has attribute; otherwise, false. - - - - - Provides extension methods for monitoring and querying events. - - - - - Starts monitoring an object for its events. - - Thrown if eventSource is Null. - - - - Asserts that an object has raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised, or - null to refer to all properties. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that all occurences of the event originated from the . - - - - - Asserts that at least one occurrence of the event had an object matching a predicate. - - - - - Static methods that aid in generic event subscription - - - - - Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder - when invoked. - - - - - Finds the Return Type of a Delegate. - - - - - Returns an Array of Types that make up a delegate's parameter signature. - - - - - Returns an array of types appended with an EventRecorder reference at the beginning. - - - - - Returns T/F Dependent on a Type Being a Delegate. - - - - - Returns the MethodInfo for the Delegate's "Invoke" Method. - - - - - Records activity for a single event. - - - - - Records raised events for one event on one object - - - - - Store information about a raised event - - Parameters the event was raised with - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - - The object events are recorded from - The name of the event that's recorded - - - - Enumerate raised events - - - - - Enumerate raised events - - - - - - Called by the auto-generated IL, to record information about a raised event. - - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - Simple dictionary that uses a to the event source as the key. - This should ensure the Garbage Collector can still clean-up the event source object. - - - - - This class is used to store data about an intercepted event - - - - - Default constructor stores the parameters the event was raised with - - - - - Parameters for the event - - - - - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - - - - - Gets an object that wraps and executes a conditional or unconditional verification. - - - - - Represents an abstraction of a particular test framework such as MSTest, nUnit, etc. - - - - - Throws a framework-specific exception to indicate a failing unit test. - - - - - Gets a value indicating whether the corresponding test framework is currently available. - - - - - Provides a fluent API for verifying an arbitrary condition. - - - - - Represents the phrase that can be used in as a placeholder for the reason of an assertion. - - - - - Initializes a new instance of the class. - - - - - Gets the name or identifier of the current subject, or a default value if the subject is not known. - - - - - Specify the condition that must be satisfied. - - If true the verification will be succesful. - - - - Specify a predicate that with the condition that must be satisfied. - - - - - Specify the reason why you expect the condition to be true. - - - A formatted phrase explaining why the condition should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Define the failure message for the verification. - - - If the contains the text "{reason}", this will be replaced by the reason as - defined through . Only 10 are supported in combination with - a {reason}. - - The format string that represents the failure message. - Optional arguments for the - - - - Indicates that every argument passed into is displayed on a separate line. - - - - - Gets or sets the name of the subject for the next verification. - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - new DateTime(2011, 3, 10)
      -
      - you can write 3.March(2011)
      -
      - Or even
      -
      - 3.March(2011).At(09, 30) -
      - -
      - - - Returns a new value for the specified and - in the month January. - - - - - Returns a new value for the specified and - in the month February. - - - - - Returns a new value for the specified and - in the month March. - - - - - Returns a new value for the specified and - in the month April. - - - - - Returns a new value for the specified and - in the month May. - - - - - Returns a new value for the specified and - in the month June. - - - - - Returns a new value for the specified and - in the month July. - - - - - Returns a new value for the specified and - in the month August. - - - - - Returns a new value for the specified and - in the month September. - - - - - Returns a new value for the specified and - in the month October. - - - - - Returns a new value for the specified and - in the month November. - - - - - Returns a new value for the specified and - in the month December. - - - - - Returns a new value for the specified and . - - - - - Returns a new value for the specified and time with the specified - , and optionally . - - - - - Returns a new value that is the current before the - specified . - - - - - Returns a new value that is the current after the - specified . - - - - - Specialized value formatter that looks for static methods in the caller's assembly marked with the - . - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Determines whether this instance can handle the specified value. - - The value. - - true if this instance can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - The value for which to create a . - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - Indicates whether the formatter should use line breaks when the specific supports it. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Marks a static method as a kind of for a particular type. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Contains a number of extension methods for floating point . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the subject is considered equal to another object according to the implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is not equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Asserts that the value is false. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Defines the way compares the expected exception - message with the actual one. - - - - - The message must match exactly, including the casing of the characters. - - - - - The message must match except for the casing of the characters. - - - - - The message must start with the exact text, including the casing of the characters.. - - - - - The message must start with the text except for the casing of the characters. - - - - - The message must contain the exact text. - - - - - The message must contain the text except for the casing of the characters. - - - - - The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. - - - - - Contains a number of methods to assert that a is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that the current is exactly equal to the value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is not equal to the value. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is within the specified number of milliseconds (default = 20 ms) - from the specified value. - - - Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, - use . - - - The expected time to compare the actual value with. - - - The maximum amount of milliseconds which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is before the specified value. - - The that the current value is expected to be before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or before the specified value. - - The that the current value is expected to be on or before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is after the specified value. - - The that the current value is expected to be after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or after the specified value. - - The that the current value is expected to be on or after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the year. - - The expected year of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the month. - - The expected month of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the day. - - The expected day of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the hour. - - The expected hour of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the minute. - - The expected minutes of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the second. - - The expected seconds of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Returns a object that can be used to assert that the current - exceeds the specified compared to another . - - - The amount of time that the current should exceed compared to another . - - - - - Returns a object that can be used to assert that the current - is equal to or exceeds the specified compared to another . - - - The amount of time that the current should be equal or exceed compared to - another . - - - - - Returns a object that can be used to assert that the current - differs exactly the specified compared to another . - - - The amount of time that the current should differ exactly compared to another . - - - - - Returns a object that can be used to assert that the current - is within the specified compared to another . - - - The amount of time that the current should be within another . - - - - - Returns a object that can be used to assert that the current - differs at maximum the specified compared to another . - - - The maximum amount of time that the current should differ compared to another . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the correct state. - - - - - Asserts that the is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not equal to the GUID. - - The unexpected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable boolean value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable boolean value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that the time difference of the current is greater than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is equal to the - specified time. - - The expected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is not equal to the - specified time. - - The unexpected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that an object equals another object using its implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object does not equal another object using it's method. - - The unexpected value - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to the exact same object as another object reference. - - The expected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to a different object than another object reference refers to. - - The unexpected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. - - The expected string. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with - the exception of the casing. - - - The string that the subject is expected to be equivalent to. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not exactly the same as the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to be equivalent to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts exactly with the specified value, - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends exactly with the specified , - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains another (fragment of a) string. - - - The (fragement of a) string that the current string should contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain another (fragment of a) string. - - - The (fragement of a) string that the current string should not contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain the specified string, - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string has the specified length. - - The expected length of the string - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is neither null nor . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is neither null nor nor white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or or white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the object which value is being asserted. - - - - - Dedicated class for comparing two strings and generating consistent error messages. - - - - - Gets or sets a value indicating whether the subject should not match the pattern. - - - - - Gets or sets a value indicating whether the matching process should ignore any casing difference. - - - - - Contains a number of methods to assert that two objects differ in the expected way. - - - You can use the and for a more fluent - way of specifying a or a . - - - - - Asserts that a occurs a specified amount of time before another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a occurs a specified amount of time after another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides the logic and the display text for a . - - - - - Contains a number of methods to assert that an yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw any exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - - Contains a number of methods to assert that an is in the correct state. - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - Determines how the expected message is compared with the actual message. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - - - - Selection rule that adds all public properties of the subject as far as they are defined on the declared - type. - - - - - Represents a rule that defines which properties of the subject-under-test to include while comparing - two objects for structural equality. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - Type info about the subject. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Selection rule that adds all public properties of the subject based on its run-time type rather than its - declared type. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - General purpose implementation of that uses a predicate to determine whether - this rule applies to a particular property and executes an action to assert equality. - - The type of the subject. - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Provides the required information for executing an equality assertion between a subject and an expectation. - - The type of the subject. - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the value of the - - - - - Gets the value of the expectation object that was matched with the subject using a . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Selection rule that removes a particular property from the structural comparison based on a predicate. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides details about the subject's root or nested property. - - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the full path from the root object until the current object separated by dots. - - - - - Gets a display-friendly representation of the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Represents a selection context of a nested property - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Is responsible for the exact run-time behavior of a structural equality comparison. - - The type of the subject. - - - - Provides the run-time details of the class. - - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets or sets a value indicating whether or not the assertion must perform a deep comparison. - - - - - Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, - and includes the entire object graph. The names of the properties between the subject and expectation must match. - - - - - Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects - or collections. - - - - - Adds all public properties of the subject as far as they are defined on the declared type. - - - - - Adds all public properties of the subject based on its run-time type rather than its declared type. - - - - - Tries to match the properties of the subject with equally named properties on the expectation. Ignores those - properties that don't exist on the expectation. - - - - - Requires the expectation to have properties which are equally named to properties on the subject. - - - - - - Excludes the specified (nested) property from the structural equality check. - - - - - Excludes a (nested) property based on a predicate from the structural equality check. - - - - - Includes the specified property in the equality check. - - - This overrides the default behavior of including all declared properties. - - - - - The assertion to execute when the predicate is met. - - - - - Causes the structural equality check to include nested collections and complex types. - - - - - Causes the structural equality check to ignore any cyclic references. - - - By default, cyclic references within the object graph will cause an exception to be thrown. - - - - - Clears all selection rules, including those that were added by default. - - - - - Clears all matching rules, including those that were added by default. - - - - - Adds a selection rule to the ones allready added by default and which is evaluated after all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets value indicating whether the equality check will include nested collections and complex types. - - - - - Gets value indicating how cyclic references should be handled. By default, it will throw an exception. - - - - - Defines additional overrides when used with - - - - - Allows overriding the way structural equality is applied to (nested) objects of tyoe - - - - - Allows overriding the way structural equality is applied to particular properties. - - - A predicate based on the of the subject that is used to identify the property for which the - override applies. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Indication of how cyclic references should be handled when validating equality of nested properties. - - - - - Cyclic references will be ignored. - - - - - Cyclic references will result in an exception. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Selection rule that removes a particular property from the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Represents a rule that defines how to map the properties from the subject-under-test with the properties - on the expectation object. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Selection rule that includes a particular property in the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Provides information on a particular property during an assertion for structural equality of two object graphs. - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the value of the - - - - - Requires the expectation object to have a property with the exact same name. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the value of the - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Gets a verification object associated with the current and . - - - - - Is responsible for validating the equality of one or more properties of a subject with another object. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Finds a property of the expectation with the exact same name, but doesn't require it. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - TimeSpan.FromHours(12)
      -
      - you can write
      -
      - 12.Hours()
      -
      - Or even
      -
      - 12.Hours().And(30.Minutes()). -
      - -
      - - - Returns a based on a number of milliseconds. - - - - - Returns a based on a number of seconds. - - - - - Returns a based on a number of seconds, and add the specified - . - - - - - Returns a based on a number of minutes. - - - - - Returns a based on a number of minutes, and add the specified - . - - - - - Returns a based on a number of hours. - - - - - Returns a based on a number of hours, and add the specified - . - - - - - Returns a based on a number of days. - - - - - Returns a based on a number of days, and add the specified - . - - - - - Convenience method for chaining multiple calls to the methods provided by this class. - - - 23.Hours().And(59.Minutes()) - - - - - Extension methods for getting method and property selectors for a type. - - - - - Returns the types that are visible outside the specified . - - - - - Returns a method selector for the current . - - - - - Returns a method selector for the current . - - - - - Returns a property selector for the current . - - - - - Returns a property selector for the current . - - - - - Static class that allows for a 'fluent' selection of the types from an . - - - AllTypes.From(myAssembly)
      - .ThatImplement<ISomeInterface>
      - .Should()
      - .BeDecoratedWith<SomeAttribute>() -
      -
      - - - Returns a for selecting the types that are visible outside the - specified . - - The assembly from which to select the types. - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class. - - The methods to assert. - - - - Asserts that the selected methods are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of methods of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select methods. - - - - Initializes a new instance of the class. - - The types from which to select methods. - - - - Only select the methods that return the specified type - - - - - Only select the methods that are decorated with an attribute of the specified type. - - - - - The resulting objects. - - - - - Determines whether the specified method has a special name (like properties and events). - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the methods that are public or internal. - - - - - Only select the methods without a return value - - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class, for a number of objects. - - The properties to assert. - - - - Asserts that the selected properties are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of properties of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select properties. - - - - Initializes a new instance of the class. - - The types from which to select properties. - - - - Only select the properties that are decorated with an attribute of the specified type. - - - - - Only select the properties that return the specified type - - - - - The resulting objects. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the properties that have a public or internal getter. - - - - - Contains a number of methods to assert that a meets certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current type is equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is equal to the specified type. - - The expected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Creates an error message in case the specifed type differs from the - type. - - - An empty if the two specified types are the same, or an error message that describes that - the two specified types are not the same. - - - - - Asserts that the current type is not equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is not equal to the specified type. - - The unexpected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent filtering a list of types. - - - - - Determines whether a type is a subclass of another type, but NOT the same type. - - - - - Determines whether a type implements an interface (but is not the interface itself). - - - - - Determines whether a type is decorated with a particular attribute. - - - - - Determines whether the namespace of type is exactly . - - - - - Determines whether the namespace of type is starts with . - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the attribute. - - The expected attribute - - - - Asserts that the current equals the attribute. - - The expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has the specified value. - - The expected value - - - - Asserts that the current has the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the element. - - The expected element - - - - Asserts that the current equals the element. - - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - -
      -
      diff --git a/dep/FluentAssertions.2.0.0.1/lib/sl4/FluentAssertions.Silverlight.dll b/dep/FluentAssertions.2.0.0.1/lib/sl4/FluentAssertions.Silverlight.dll deleted file mode 100644 index 5a40024299252483837001ab67833fc06cca2f16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158720 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
      xseUeYH*la;{9sgU>wykF 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 - - - FluentAssertions.Silverlight - - - - - Initializes a new instance of the class. - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - The current method or property. - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - The current method or property. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the current . - - - - - - Returns a object that can be used to assert the methods returned by the - current . - - - - - - Returns a object that can be used to assert the - current . - - - - - - Returns a object that can be used to assert the properties returned by the - current . - - - - - - Asserts that the properties of an object matches those of another object. - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - Notice that actual behavior is determined by the instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - - - A reference to the configuration object that can be used - to influence the way the object graphs are compared. You can also provide an alternative instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Safely casts the specified object to the type specified through . - - - Has been introduced to allow casting objects without breaking the fluent API. - - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Contains a number of methods to assert that a reference type object is in the expected state. - - - - - Asserts that the object is of the specified type . - - The expected type of the object. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the object is assignable to a variable of type . - - The type to which the object should be assignable. - The reason why the object should be assignable to the type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Gets the object which value is being asserted. - - - - - Asserts that the number of items in the collection matches the supplied amount. - - The expected number of items in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the collection matches a condition stated by the . - - A predicate that yields the number of items that is expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any duplicate items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any null items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the elements that are not expected. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the unexpected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection only contains items that are assignable to the type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in the specified . - Elements are compared using their implementation. - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - - - Asserts that the collection is a subset of the . - - An with the expected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection is not a subset of the . - - An with the unexpected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Assert that the current collection has the same number of elements as . - - The other collection with the same expected number of elements - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has not been initialized yet with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has been initialized with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has the supplied at the - supplied . - - The index where the element is expected - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection does not contain the supplied item. - - The element that is not expected to be in the collection - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection shares one or more items with the specified . - - The with the expected shared items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not share any items with the specified . - - The to compare to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expectation state. - - - - - Asserts that two collections contain the same items in the same order, where equality is determined using a - predicate. - - - The collection to compare the subject with. - - - A predicate the is used to determine whether two objects should be treated as equal. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains the specified item. - - The expectation item. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection contains some extra items in addition to the original items. - - An of expectation items. - Additional items that are expectation to be contained by the collection. - - - - Asserts that the collection contains at least one item that matches the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection only contains items that match a predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Expects the current collection to contain only a single item matching the specified . - - The predictes that will be used to find the matching items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current dictionary has not been initialized yet with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary has been initialized with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches the supplied amount. - - The expected number of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches a condition stated by a predicate. - - The predicate which must be statisfied by the amount of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The expected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current dictionary not to contain all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The unexpected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified key. Keys are compared using - their implementation. - - The expected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified key. - Keys are compared using their implementation. - - The unexpected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified value. Values are compared using - their implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified value. - Values are compared using their implementation. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified . - Keys and values are compared using their implementation. - - The expected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified . - Keys and values are compared using their implementation. - - The unexpected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified for the - supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current collection contains the specified object. Elements are compared - using their implementation. - - An object, or of objects that are expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. - - - - - Finds the first index at which the does not match the - string anymore, including the exact casing. - - - - - Finds the first index at which the does not match the - string anymore, accounting for the specified . - - - - - Gets the quoted three characters at the specified index of a string, including the index itself. - - - - - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. - - - - - Joins a string with one or more other strings using a specified separator. - - - Any string that is empty (including the original string) is ignored. - - - - - Determines whether two objects refer to the same property. - - - - - Finds the property by a case-sensitive name. - - - Returns null if no such property exists. - - - - - Determines whether the specified method has been annotated with a specific attribute. - - - true if the specified method has attribute; otherwise, false. - - - - - Provides extension methods for monitoring and querying events. - - - - - Starts monitoring an object for its events. - - Thrown if eventSource is Null. - - - - Asserts that an object has raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised, or - null to refer to all properties. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that all occurences of the event originated from the . - - - - - Asserts that at least one occurrence of the event had an object matching a predicate. - - - - - Static methods that aid in generic event subscription - - - - - Generates an eventhandler for an event of type eventSignature that calls RegisterEvent on recorder - when invoked. - - - - - Finds the Return Type of a Delegate. - - - - - Returns an Array of Types that make up a delegate's parameter signature. - - - - - Returns an array of types appended with an EventRecorder reference at the beginning. - - - - - Returns T/F Dependent on a Type Being a Delegate. - - - - - Returns the MethodInfo for the Delegate's "Invoke" Method. - - - - - Records activity for a single event. - - - - - Records raised events for one event on one object - - - - - Store information about a raised event - - Parameters the event was raised with - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - - The object events are recorded from - The name of the event that's recorded - - - - Enumerate raised events - - - - - Enumerate raised events - - - - - - Called by the auto-generated IL, to record information about a raised event. - - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - Simple dictionary that uses a to the event source as the key. - This should ensure the Garbage Collector can still clean-up the event source object. - - - - - This class is used to store data about an intercepted event - - - - - Default constructor stores the parameters the event was raised with - - - - - Parameters for the event - - - - - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - - - - - Gets an object that wraps and executes a conditional or unconditional verification. - - - - - Provides a fluent API for verifying an arbitrary condition. - - - - - Represents the phrase that can be used in as a placeholder for the reason of an assertion. - - - - - Initializes a new instance of the class. - - - - - Gets the name or identifier of the current subject, or a default value if the subject is not known. - - - - - Specify the condition that must be satisfied. - - If true the verification will be succesful. - - - - Specify a predicate that with the condition that must be satisfied. - - - - - Specify the reason why you expect the condition to be true. - - - A formatted phrase explaining why the condition should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Define the failure message for the verification. - - - If the contains the text "{reason}", this will be replaced by the reason as - defined through . Only 10 are supported in combination with - a {reason}. - - The format string that represents the failure message. - Optional arguments for the - - - - Indicates that every argument passed into is displayed on a separate line. - - - - - Gets or sets the name of the subject for the next verification. - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - new DateTime(2011, 3, 10)
      -
      - you can write 3.March(2011)
      -
      - Or even
      -
      - 3.March(2011).At(09, 30) -
      - -
      - - - Returns a new value for the specified and - in the month January. - - - - - Returns a new value for the specified and - in the month February. - - - - - Returns a new value for the specified and - in the month March. - - - - - Returns a new value for the specified and - in the month April. - - - - - Returns a new value for the specified and - in the month May. - - - - - Returns a new value for the specified and - in the month June. - - - - - Returns a new value for the specified and - in the month July. - - - - - Returns a new value for the specified and - in the month August. - - - - - Returns a new value for the specified and - in the month September. - - - - - Returns a new value for the specified and - in the month October. - - - - - Returns a new value for the specified and - in the month November. - - - - - Returns a new value for the specified and - in the month December. - - - - - Returns a new value for the specified and . - - - - - Returns a new value for the specified and time with the specified - , and optionally . - - - - - Returns a new value that is the current before the - specified . - - - - - Returns a new value that is the current after the - specified . - - - - - Specialized value formatter that looks for static methods in the caller's assembly marked with the - . - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Determines whether this instance can handle the specified value. - - The value. - - true if this instance can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - The value for which to create a . - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - Indicates whether the formatter should use line breaks when the specific supports it. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Marks a static method as a kind of for a particular type. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Contains a number of extension methods for floating point . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the subject is considered equal to another object according to the implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is not equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Asserts that the value is false. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Defines the way compares the expected exception - message with the actual one. - - - - - The message must match exactly, including the casing of the characters. - - - - - The message must match except for the casing of the characters. - - - - - The message must start with the exact text, including the casing of the characters.. - - - - - The message must start with the text except for the casing of the characters. - - - - - The message must contain the exact text. - - - - - The message must contain the text except for the casing of the characters. - - - - - The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. - - - - - Contains a number of methods to assert that a is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that the current is exactly equal to the value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is not equal to the value. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is within the specified number of milliseconds (default = 20 ms) - from the specified value. - - - Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, - use . - - - The expected time to compare the actual value with. - - - The maximum amount of milliseconds which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is before the specified value. - - The that the current value is expected to be before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or before the specified value. - - The that the current value is expected to be on or before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is after the specified value. - - The that the current value is expected to be after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or after the specified value. - - The that the current value is expected to be on or after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the year. - - The expected year of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the month. - - The expected month of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the day. - - The expected day of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the hour. - - The expected hour of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the minute. - - The expected minutes of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the second. - - The expected seconds of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Returns a object that can be used to assert that the current - exceeds the specified compared to another . - - - The amount of time that the current should exceed compared to another . - - - - - Returns a object that can be used to assert that the current - is equal to or exceeds the specified compared to another . - - - The amount of time that the current should be equal or exceed compared to - another . - - - - - Returns a object that can be used to assert that the current - differs exactly the specified compared to another . - - - The amount of time that the current should differ exactly compared to another . - - - - - Returns a object that can be used to assert that the current - is within the specified compared to another . - - - The amount of time that the current should be within another . - - - - - Returns a object that can be used to assert that the current - differs at maximum the specified compared to another . - - - The maximum amount of time that the current should differ compared to another . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the correct state. - - - - - Asserts that the is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not equal to the GUID. - - The unexpected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable boolean value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable boolean value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that the time difference of the current is greater than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is equal to the - specified time. - - The expected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is not equal to the - specified time. - - The unexpected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that an object equals another object using its implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object does not equal another object using it's method. - - The unexpected value - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to the exact same object as another object reference. - - The expected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to a different object than another object reference refers to. - - The unexpected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. - - The expected string. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with - the exception of the casing. - - - The string that the subject is expected to be equivalent to. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not exactly the same as the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to be equivalent to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts exactly with the specified value, - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends exactly with the specified , - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains another (fragment of a) string. - - - The (fragement of a) string that the current string should contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain another (fragment of a) string. - - - The (fragement of a) string that the current string should not contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain the specified string, - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string has the specified length. - - The expected length of the string - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is neither null nor . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is neither null nor nor white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or or white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the object which value is being asserted. - - - - - Dedicated class for comparing two strings and generating consistent error messages. - - - - - Gets or sets a value indicating whether the subject should not match the pattern. - - - - - Gets or sets a value indicating whether the matching process should ignore any casing difference. - - - - - Contains a number of methods to assert that two objects differ in the expected way. - - - You can use the and for a more fluent - way of specifying a or a . - - - - - Asserts that a occurs a specified amount of time before another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a occurs a specified amount of time after another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides the logic and the display text for a . - - - - - Contains a number of methods to assert that an yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw any exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - - Contains a number of methods to assert that an is in the correct state. - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - Determines how the expected message is compared with the actual message. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - - - - Selection rule that adds all public properties of the subject as far as they are defined on the declared - type. - - - - - Represents a rule that defines which properties of the subject-under-test to include while comparing - two objects for structural equality. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - Type info about the subject. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Selection rule that adds all public properties of the subject based on its run-time type rather than its - declared type. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - General purpose implementation of that uses a predicate to determine whether - this rule applies to a particular property and executes an action to assert equality. - - The type of the subject. - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Provides the required information for executing an equality assertion between a subject and an expectation. - - The type of the subject. - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the value of the - - - - - Gets the value of the expectation object that was matched with the subject using a . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Selection rule that removes a particular property from the structural comparison based on a predicate. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides details about the subject's root or nested property. - - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the full path from the root object until the current object separated by dots. - - - - - Gets a display-friendly representation of the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Represents a selection context of a nested property - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Is responsible for the exact run-time behavior of a structural equality comparison. - - The type of the subject. - - - - Provides the run-time details of the class. - - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets or sets a value indicating whether or not the assertion must perform a deep comparison. - - - - - Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, - and includes the entire object graph. The names of the properties between the subject and expectation must match. - - - - - Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects - or collections. - - - - - Adds all public properties of the subject as far as they are defined on the declared type. - - - - - Adds all public properties of the subject based on its run-time type rather than its declared type. - - - - - Tries to match the properties of the subject with equally named properties on the expectation. Ignores those - properties that don't exist on the expectation. - - - - - Requires the expectation to have properties which are equally named to properties on the subject. - - - - - - Excludes the specified (nested) property from the structural equality check. - - - - - Excludes a (nested) property based on a predicate from the structural equality check. - - - - - Includes the specified property in the equality check. - - - This overrides the default behavior of including all declared properties. - - - - - The assertion to execute when the predicate is met. - - - - - Causes the structural equality check to include nested collections and complex types. - - - - - Causes the structural equality check to ignore any cyclic references. - - - By default, cyclic references within the object graph will cause an exception to be thrown. - - - - - Clears all selection rules, including those that were added by default. - - - - - Clears all matching rules, including those that were added by default. - - - - - Adds a selection rule to the ones allready added by default and which is evaluated after all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets value indicating whether the equality check will include nested collections and complex types. - - - - - Gets value indicating how cyclic references should be handled. By default, it will throw an exception. - - - - - Defines additional overrides when used with - - - - - Allows overriding the way structural equality is applied to (nested) objects of tyoe - - - - - Allows overriding the way structural equality is applied to particular properties. - - - A predicate based on the of the subject that is used to identify the property for which the - override applies. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Indication of how cyclic references should be handled when validating equality of nested properties. - - - - - Cyclic references will be ignored. - - - - - Cyclic references will result in an exception. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Selection rule that removes a particular property from the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Represents a rule that defines how to map the properties from the subject-under-test with the properties - on the expectation object. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Selection rule that includes a particular property in the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Provides information on a particular property during an assertion for structural equality of two object graphs. - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the value of the - - - - - Requires the expectation object to have a property with the exact same name. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides methods for selecting one or more properties of an object and comparing them with another object. - - - - - Includes all properties of when comparing the subject with another object using . - - - - - Includes all properties of including those of the run-time type when comparing the subject - with another object using . - - - - - Includes all properties of when comparing the subject with another object using , - except those that the other object does not have. - - - - - Perform recursive property comparison of the child properties for objects that are of incompatible type. - - - Indication of how cyclic references in the nested properties should be handled. By default this will result in an - exception, but if is specified, cyclic references will just be ignored. - - - - - Includes all properties of when comparing the subject with another object using , - except those specified using a property expression. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Excludes the properties specified by the from the comparison. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Includes only those properties of when comparing the subject with another object using - that were specified using a property expression. - - A single property expression to include. - Optional list of additional property expressions to include. - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - The object to compare the current object with - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the value of the - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Gets a verification object associated with the current and . - - - - - Is responsible for validating the equality of one or more properties of a subject with another object. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Finds a property of the expectation with the exact same name, but doesn't require it. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - TimeSpan.FromHours(12)
      -
      - you can write
      -
      - 12.Hours()
      -
      - Or even
      -
      - 12.Hours().And(30.Minutes()). -
      - -
      - - - Returns a based on a number of milliseconds. - - - - - Returns a based on a number of seconds. - - - - - Returns a based on a number of seconds, and add the specified - . - - - - - Returns a based on a number of minutes. - - - - - Returns a based on a number of minutes, and add the specified - . - - - - - Returns a based on a number of hours. - - - - - Returns a based on a number of hours, and add the specified - . - - - - - Returns a based on a number of days. - - - - - Returns a based on a number of days, and add the specified - . - - - - - Convenience method for chaining multiple calls to the methods provided by this class. - - - 23.Hours().And(59.Minutes()) - - - - - Extension methods for getting method and property selectors for a type. - - - - - Returns the types that are visible outside the specified . - - - - - Returns a method selector for the current . - - - - - Returns a method selector for the current . - - - - - Returns a property selector for the current . - - - - - Returns a property selector for the current . - - - - - Static class that allows for a 'fluent' selection of the types from an . - - - AllTypes.From(myAssembly)
      - .ThatImplement<ISomeInterface>
      - .Should()
      - .BeDecoratedWith<SomeAttribute>() -
      -
      - - - Returns a for selecting the types that are visible outside the - specified . - - The assembly from which to select the types. - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class. - - The method to assert. - - - - Initializes a new instance of the class. - - The methods to assert. - - - - Asserts that the selected methods are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of methods of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select methods. - - - - Initializes a new instance of the class. - - The types from which to select methods. - - - - Only select the methods that return the specified type - - - - - Only select the methods that are decorated with an attribute of the specified type. - - - - - The resulting objects. - - - - - Determines whether the specified method has a special name (like properties and events). - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the methods that are public or internal. - - - - - Only select the methods without a return value - - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class, for a single . - - The property to assert. - - - - Initializes a new instance of the class, for a number of objects. - - The properties to assert. - - - - Asserts that the selected properties are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of properties of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select properties. - - - - Initializes a new instance of the class. - - The types from which to select properties. - - - - Only select the properties that are decorated with an attribute of the specified type. - - - - - Only select the properties that return the specified type - - - - - The resulting objects. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the properties that have a public or internal getter. - - - - - Contains a number of methods to assert that a meets certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current type is equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is equal to the specified type. - - The expected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Creates an error message in case the specifed type differs from the - type. - - - An empty if the two specified types are the same, or an error message that describes that - the two specified types are not the same. - - - - - Asserts that the current type is not equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is not equal to the specified type. - - The unexpected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent filtering a list of types. - - - - - The resulting objects. - - - - - Determines whether a type is a subclass of another type, but NOT the same type. - - - - - Determines whether a type implements an interface (but is not the interface itself). - - - - - Determines whether a type is decorated with a particular attribute. - - - - - Determines whether the namespace of type is exactly . - - - - - Determines whether the namespace of type is starts with . - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Contains a number of methods to assert that all s in a - meet certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the attribute. - - The expected attribute - - - - Asserts that the current equals the attribute. - - The expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has the specified value. - - The expected value - - - - Asserts that the current has the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the element. - - The expected element - - - - Asserts that the current equals the element. - - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - -
      -
      diff --git a/dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll b/dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll deleted file mode 100644 index 9313918b18d2dcdb4e80594637103d1cd11623c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63336 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 H5HbBfEx=6F diff --git a/dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml b/dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml deleted file mode 100644 index f8009f5096d..00000000000 --- a/dep/FluentAssertions.2.0.0.1/lib/sl4/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml +++ /dev/null @@ -1,3429 +0,0 @@ - - - - Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight - - - -

      - UrlToTest specifies the url that should be requested to give context to the test. - - - - - An unused attribute. - - - - - - Gets the URL to test. - - - - - AspNetDevelopmentServer specifies the settings to be used for the - ASP.NET Development Server for the test. - - - - - Initializes the AspNetDevelopmentServerAttribute. - - The name. - The path to web app. - - - - Initializes the AspNetDevelopmentServerAttribute. - - The name. - The path to web app. - The web app root. - - - - Gets the name. - - - - - Gets the PathToWebApp. - - - - - Gets the web app root. - - - - - AspNetDevelopmentServerHost specifies the settings to be used when - ASP.NET Development Server is the host server for the test. - - - - - Initializes the AspNetDevelopmentServerHostAttribute. - - The path to the web app. - - - - Initializes the AspNetDevelopmentServerHostAttribute. - - The path to the web app. - The web app root. - - - - Gets the path to the web application. - - - - - Gets the WebAppRoot. - - - - - For ASP.NET sites that require basic authentication, specify the - user name and password using the Credential attribute. - WARNING: The password is stored in plain text in source code - and in the compiled assembly. Restrict access to the source code - and assembly to protect this sensitive information. - - - - - Specify the user name and password needed to access the web site under test. - - The user name. - - The password. WARNING: The password is stored in plain text in source code - and in the compiled assembly. Restrict access to the source code and assembly - to protect this sensitive information. - - - - - Specify the user name, password, and domain needed to access the web site under test. - - The user name. - - The password. WARNING: The password is stored in plain text in source code - and in the compiled assembly. Restrict access to the source code and assembly - to protect this sensitive information. - - The domain. - - - - Gets the user name. - - - - - Gets the password. - - - - - Gets the domain. - - - - - Base class for Framework Exceptions, provides localization trick so that messages are in HA locale. - - - - - Initializes a new UnitTestAssertException. - - - - - Initializes UnitTestAssertException. - - The message. - - - - Gets the Message string. - - - - - AssertFailedException class. Used to indicate failure for a test case - - - - - Initializes a new AssertFailedException. - - The message. - - - - AssertFailedException - - The message. - The inner exception. - - - - The AssertInconclusiveException class. - - - - - Initializes a new AssertInconclusiveException. - - The message. - - - - Initializes a new AssertInconclusiveException. - - The message. - The inner exception. - - - - Initializes a new AssertInconclusiveException. - - - - - InternalTestFailureException class. Used to indicate internal failure - for a test case. - - - - - Initializes a new InternalTestFailureException. - - The message. - - - - Initializes a new InternalTestFailureException. - - The message. - The inner exception. - - - - Initializes a new InternalTestFailureException. - - - - - A collection of helper classes to test various conditions within - unit tests. If the condition being tested is not met, an exception - is thrown. - - - - - - - - - - Tests whether the specified condition is true and throws an exception - if the condition is false. - - The condition the test expects to be true. - - Thrown if is false. - - - - - Tests whether the specified condition is true and throws an exception - if the condition is false. - - The condition the test expects to be true. - - The message to include in the exception when - is false. The message is shown in test results. - - - Thrown if is false. - - - - - Tests whether the specified condition is true and throws an exception - if the condition is false. - - The condition the test expects to be true. - - The message to include in the exception when - is false. The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is false. - - - - - Tests whether the specified condition is false and throws an exception - if the condition is true. - - The condition the test expects to be false. - - Thrown if is true. - - - - - Tests whether the specified condition is false and throws an exception - if the condition is true. - - The condition the test expects to be false. - - The message to include in the exception when - is true. The message is shown in test results. - - - Thrown if is true. - - - - - Tests whether the specified condition is false and throws an exception - if the condition is true. - - The condition the test expects to be false. - - The message to include in the exception when - is true. The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is true. - - - - - Tests whether the specified object is null and throws an exception - if it is not. - - The object the test expects to be null. - - Thrown if is not null. - - - - - Tests whether the specified object is null and throws an exception - if it is not. - - The object the test expects to be null. - - The message to include in the exception when - is not null. The message is shown in test results. - - - Thrown if is not null. - - - - - Tests whether the specified object is null and throws an exception - if it is not. - - The object the test expects to be null. - - The message to include in the exception when - is not null. The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is not null. - - - - - Tests whether the specified object is non-null and throws an exception - if it is null. - - The object the test expects not to be null. - - Thrown if is null. - - - - - Tests whether the specified object is non-null and throws an exception - if it is null. - - The object the test expects not to be null. - - The message to include in the exception when - is null. The message is shown in test results. - - - Thrown if is null. - - - - - Tests whether the specified object is non-null and throws an exception - if it is null. - - The object the test expects not to be null. - - The message to include in the exception when - is null. The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is null. - - - - - Tests whether the specified objects both refer to the same object and - throws an exception if the two inputs do not refer to the same object. - - - The first object to compare. This is the value the test expects. - - - The second object to compare. This is the value produced by the code under test. - - - Thrown if does not refer to the same object - as . - - - - - Tests whether the specified objects both refer to the same object and - throws an exception if the two inputs do not refer to the same object. - - - The first object to compare. This is the value the test expects. - - - The second object to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is not the same as . The message is shown - in test results. - - - Thrown if does not refer to the same object - as . - - - - - Tests whether the specified objects both refer to the same object and - throws an exception if the two inputs do not refer to the same object. - - - The first object to compare. This is the value the test expects. - - - The second object to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is not the same as . The message is shown - in test results. - - - An array of parameters to use when formatting . - - - Thrown if does not refer to the same object - as . - - - - - Tests whether the specified objects refer to different objects and - throws an exception if the two inputs refer to the same object. - - - The first object to compare. This is the value the test expects not - to match . - - - The second object to compare. This is the value produced by the code under test. - - - Thrown if refers to the same object - as . - - - - - Tests whether the specified objects refer to different objects and - throws an exception if the two inputs refer to the same object. - - - The first object to compare. This is the value the test expects not - to match . - - - The second object to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is the same as . The message is shown in - test results. - - - Thrown if refers to the same object - as . - - - - - Tests whether the specified objects refer to different objects and - throws an exception if the two inputs refer to the same object. - - - The first object to compare. This is the value the test expects not - to match . - - - The second object to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is the same as . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if refers to the same object - as . - - - - - Tests whether the specified values are equal and throws an exception - if the two values are not equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - The type of values to compare. - - The first value to compare. This is the value the tests expects. - - - The second value to compare. This is the value produced by the code under test. - - - Thrown if is not equal to - . - - - - - Tests whether the specified values are equal and throws an exception - if the two values are not equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - The type of values to compare. - - The first value to compare. This is the value the tests expects. - - - The second value to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified values are equal and throws an exception - if the two values are not equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - The type of values to compare. - - The first value to compare. This is the value the tests expects. - - - The second value to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified values are unequal and throws an exception - if the two values are equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - The type of values to compare. - - The first value to compare. This is the value the test expects not - to match . - - - The second value to compare. This is the value produced by the code under test. - - - Thrown if is equal to . - - - - - Tests whether the specified values are unequal and throws an exception - if the two values are equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - The type of values to compare. - - The first value to compare. This is the value the test expects not - to match . - - - The second value to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - Thrown if is equal to . - - - - - Tests whether the specified values are unequal and throws an exception - if the two values are equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - The type of values to compare. - - The first value to compare. This is the value the test expects not - to match . - - - The second value to compare. This is the value produced by the code under test. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified objects are equal and throws an exception - if the two objects are not equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - - The first object to compare. This is the object the tests expects. - - - The second object to compare. This is the object produced by the code under test. - - - Thrown if is not equal to - . - - - - - Tests whether the specified objects are equal and throws an exception - if the two objects are not equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - - The first object to compare. This is the object the tests expects. - - - The second object to compare. This is the object produced by the code under test. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified objects are equal and throws an exception - if the two objects are not equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - - The first object to compare. This is the object the tests expects. - - - The second object to compare. This is the object produced by the code under test. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified objects are unequal and throws an exception - if the two objects are equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - - The first object to compare. This is the value the test expects not - to match . - - - The second object to compare. This is the object produced by the code under test. - - - Thrown if is equal to . - - - - - Tests whether the specified objects are unequal and throws an exception - if the two objects are equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - - The first object to compare. This is the value the test expects not - to match . - - - The second object to compare. This is the object produced by the code under test. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - Thrown if is equal to . - - - - - Tests whether the specified objects are unequal and throws an exception - if the two objects are equal. Different numeric types are treated - as unequal even if the logical values are equal. 42L is not equal to 42. - - - The first object to compare. This is the value the test expects not - to match . - - - The second object to compare. This is the object produced by the code under test. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified floats are equal and throws an exception - if they are not equal. - - - The first float to compare. This is the float the tests expects. - - - The second float to compare. This is the float produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by more than . - - - Thrown if is not equal to - . - - - - - Tests whether the specified floats are equal and throws an exception - if they are not equal. - - - The first float to compare. This is the float the tests expects. - - - The second float to compare. This is the float produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by more than . - - - The message to include in the exception when - is different than by more than - . The message is shown in test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified floats are equal and throws an exception - if they are not equal. - - - The first float to compare. This is the float the tests expects. - - - The second float to compare. This is the float produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by more than . - - - The message to include in the exception when - is different than by more than - . The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified floats are unequal and throws an exception - if they are equal. - - - The first float to compare. This is the float the test expects not to - match . - - - The second float to compare. This is the float produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by at most . - - - Thrown if is equal to . - - - - - Tests whether the specified floats are unequal and throws an exception - if they are equal. - - - The first float to compare. This is the float the test expects not to - match . - - - The second float to compare. This is the float produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by at most . - - - The message to include in the exception when - is equal to or different by less than - . The message is shown in test results. - - - Thrown if is equal to . - - - - - Tests whether the specified floats are unequal and throws an exception - if they are equal. - - - The first float to compare. This is the float the test expects not to - match . - - - The second float to compare. This is the float produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by at most . - - - The message to include in the exception when - is equal to or different by less than - . The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified doubles are equal and throws an exception - if they are not equal. - - - The first double to compare. This is the double the tests expects. - - - The second double to compare. This is the double produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by more than . - - - Thrown if is not equal to - . - - - - - Tests whether the specified doubles are equal and throws an exception - if they are not equal. - - - The first double to compare. This is the double the tests expects. - - - The second double to compare. This is the double produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by more than . - - - The message to include in the exception when - is different than by more than - . The message is shown in test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified doubles are equal and throws an exception - if they are not equal. - - - The first double to compare. This is the double the tests expects. - - - The second double to compare. This is the double produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by more than . - - - The message to include in the exception when - is different than by more than - . The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified doubles are unequal and throws an exception - if they are equal. - - - The first double to compare. This is the double the test expects not to - match . - - - The second double to compare. This is the double produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by at most . - - - Thrown if is equal to . - - - - - Tests whether the specified doubles are unequal and throws an exception - if they are equal. - - - The first double to compare. This is the double the test expects not to - match . - - - The second double to compare. This is the double produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by at most . - - - The message to include in the exception when - is equal to or different by less than - . The message is shown in test results. - - - Thrown if is equal to . - - - - - Tests whether the specified doubles are unequal and throws an exception - if they are equal. - - - The first double to compare. This is the double the test expects not to - match . - - - The second double to compare. This is the double produced by the code under test. - - - The required accuracy. An exception will be thrown only if - is different than - by at most . - - - The message to include in the exception when - is equal to or different by less than - . The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified strings are equal and throws an exception - if they are not equal. The invariant culture is used for the comparison. - - - The first string to compare. This is the string the tests expects. - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - Thrown if is not equal to - . - - - - - Tests whether the specified strings are equal and throws an exception - if they are not equal. The invariant culture is used for the comparison. - - - The first string to compare. This is the string the tests expects. - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified strings are equal and throws an exception - if they are not equal. The invariant culture is used for the comparison. - - - The first string to compare. This is the string the tests expects. - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified strings are equal and throws an exception - if they are not equal. - - - The first string to compare. This is the string the tests expects. - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - A CultureInfo object that supplies culture-specific comparison information. - - - Thrown if is not equal to - . - - - - - Tests whether the specified strings are equal and throws an exception - if they are not equal. - - - The first string to compare. This is the string the tests expects. - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - A CultureInfo object that supplies culture-specific comparison information. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified strings are equal and throws an exception - if they are not equal. - - - The first string to compare. This is the string the tests expects. - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - A CultureInfo object that supplies culture-specific comparison information. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified strings are unequal and throws an exception - if they are equal. The invariant culture is used for the comparison. - - - The first string to compare. This is the string the test expects not to - match . - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - Thrown if is equal to . - - - - - Tests whether the specified strings are unequal and throws an exception - if they are equal. The invariant culture is used for the comparison. - - - The first string to compare. This is the string the test expects not to - match . - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - Thrown if is equal to . - - - - - Tests whether the specified strings are unequal and throws an exception - if they are equal. The invariant culture is used for the comparison. - - - The first string to compare. This is the string the test expects not to - match . - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified strings are unequal and throws an exception - if they are equal. - - - The first string to compare. This is the string the test expects not to - match . - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - A CultureInfo object that supplies culture-specific comparison information. - - - Thrown if is equal to . - - - - - Tests whether the specified strings are unequal and throws an exception - if they are equal. - - - The first string to compare. This is the string the test expects not to - match . - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - A CultureInfo object that supplies culture-specific comparison information. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - Thrown if is equal to . - - - - - Tests whether the specified strings are unequal and throws an exception - if they are equal. - - - The first string to compare. This is the string the test expects not to - match . - - - The second string to compare. This is the string produced by the code under test. - - - A Boolean indicating a case-sensitive or insensitive comparison. (true - indicates a case-insensitive comparison.) - - - A CultureInfo object that supplies culture-specific comparison information. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified object is an instance of the expected - type and throws an exception if the expected type is not in the - inheritance hierarchy of the object. - - - The object the test expects to be of the specified type. - - - The expected type of . - - - Thrown if is null or - is not in the inheritance hierarchy - of . - - - - - Tests whether the specified object is an instance of the expected - type and throws an exception if the expected type is not in the - inheritance hierarchy of the object. - - - The object the test expects to be of the specified type. - - - The expected type of . - - - The message to include in the exception when - is not an instance of . The message is - shown in test results. - - - Thrown if is null or - is not in the inheritance hierarchy - of . - - - - - Tests whether the specified object is an instance of the expected - type and throws an exception if the expected type is not in the - inheritance hierarchy of the object. - - - The object the test expects to be of the specified type. - - - The expected type of . - - - The message to include in the exception when - is not an instance of . The message is - shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if is null or - is not in the inheritance hierarchy - of . - - - - - Tests whether the specified object is not an instance of the wrong - type and throws an exception if the specified type is in the - inheritance hierarchy of the object. - - - The object the test expects not to be of the specified type. - - - The type that should not be. - - - Thrown if is not null and - is in the inheritance hierarchy - of . - - - - - Tests whether the specified object is not an instance of the wrong - type and throws an exception if the specified type is in the - inheritance hierarchy of the object. - - - The object the test expects not to be of the specified type. - - - The type that should not be. - - - The message to include in the exception when - is an instance of . The message is shown - in test results. - - - Thrown if is not null and - is in the inheritance hierarchy - of . - - - - - Tests whether the specified object is not an instance of the wrong - type and throws an exception if the specified type is in the - inheritance hierarchy of the object. - - - The object the test expects not to be of the specified type. - - - The type that should not be. - - - The message to include in the exception when - is an instance of . The message is shown - in test results. - - - An array of parameters to use when formatting . - - - Thrown if is not null and - is in the inheritance hierarchy - of . - - - - - Throws an AssertFailedException. - - - Always thrown. - - - - - Throws an AssertFailedException. - - - The message to include in the exception. The message is shown in - test results. - - - Always thrown. - - - - - Throws an AssertFailedException. - - - The message to include in the exception. The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Always thrown. - - - - - Throws an AssertInconclusiveException. - - - Always thrown. - - - - - Throws an AssertInconclusiveException. - - - The message to include in the exception. The message is shown in - test results. - - - Always thrown. - - - - - Throws an AssertInconclusiveException. - - - The message to include in the exception. The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Always thrown. - - - - - Helper function that creates and throws an AssertionFailedException. - - name of the assertion throwing an exception. - message describing conditions for assertion failure. - The parameters. - - - - Checks the parameter for valid conditions - - The parameter. - The assertion name. - The parameter name. - The message. - The parameters. - - - - Safely converts an object to a string, handling null values and null characters. - Null values are converted to "(null)". Null characters are converted to "\\0". - - The object to convert to a string. - The converted string. - - - - Replaces null characters ('\0') with "\\0". - - The string to search. - The converted string with null characters replaced by "\\0". - - - - An exception from reflection will always be a TargetInvocationException - however - the goal of Private Accessors is to be seamless to the original code. - The only problem with throwing the inner exception is that the stack trace will - be overwritten. From here we register the stack trace of the inner exception - and then throw it. The Unit Test Adapter will then later rebuild the stack - from the cached shadow information plus the remaining stack from this throw. - - - - - - A collection of helper classes to test various conditions associated - with collections within unit tests. If the condition being tested is not - met, an exception is thrown. - - - - - Tests whether the specified collection contains the specified element - and throws an exception if the element is not in the collection. - - - The collection in which to search for the element. - - - The element that is expected to be in the collection. - - - Thrown if is not found in - . - - - - - Tests whether the specified collection contains the specified element - and throws an exception if the element is not in the collection. - - - The collection in which to search for the element. - - - The element that is expected to be in the collection. - - - The message to include in the exception when - is not in . The message is shown in - test results. - - - Thrown if is not found in - . - - - - - Tests whether the specified collection contains the specified element - and throws an exception if the element is not in the collection. - - - The collection in which to search for the element. - - - The element that is expected to be in the collection. - - - The message to include in the exception when - is not in . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not found in - . - - - - - Tests whether the specified collection does not contain the specified - element and throws an exception if the element is in the collection. - - - The collection in which to search for the element. - - - The element that is expected not to be in the collection. - - - Thrown if is found in - . - - - - - Tests whether the specified collection does not contain the specified - element and throws an exception if the element is in the collection. - - - The collection in which to search for the element. - - - The element that is expected not to be in the collection. - - - The message to include in the exception when - is in . The message is shown in test - results. - - - Thrown if is found in - . - - - - - Tests whether the specified collection does not contain the specified - element and throws an exception if the element is in the collection. - - - The collection in which to search for the element. - - - The element that is expected not to be in the collection. - - - The message to include in the exception when - is in . The message is shown in test - results. - - - An array of parameters to use when formatting . - - - Thrown if is found in - . - - - - - Tests whether all items in the specified collection are non-null and throws - an exception if any element is null. - - - The collection in which to search for null elements. - - - Thrown if a null element is found in . - - - - - Tests whether all items in the specified collection are non-null and throws - an exception if any element is null. - - - The collection in which to search for null elements. - - - The message to include in the exception when - contains a null element. The message is shown in test results. - - - Thrown if a null element is found in . - - - - - Tests whether all items in the specified collection are non-null and throws - an exception if any element is null. - - - The collection in which to search for null elements. - - - The message to include in the exception when - contains a null element. The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if a null element is found in . - - - - - Tests whether all items in the specified collection are unique or not and - throws if any two elements in the collection are equal. - - - The collection in which to search for duplicate elements. - - - Thrown if a two or more equal elements are found in - . - - - - - Tests whether all items in the specified collection are unique or not and - throws if any two elements in the collection are equal. - - - The collection in which to search for duplicate elements. - - - The message to include in the exception when - contains at least one duplicate element. The message is shown in - test results. - - - Thrown if a two or more equal elements are found in - . - - - - - Tests whether all items in the specified collection are unique or not and - throws if any two elements in the collection are equal. - - - The collection in which to search for duplicate elements. - - - The message to include in the exception when - contains at least one duplicate element. The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if a two or more equal elements are found in - . - - - - - Tests whether one collection is a subset of another collection and - throws an exception if any element in the subset is not also in the - superset. - - - The collection expected to be a subset of . - - - The collection expected to be a superset of - - - Thrown if an element in is not found in - . - - - - - Tests whether one collection is a subset of another collection and - throws an exception if any element in the subset is not also in the - superset. - - - The collection expected to be a subset of . - - - The collection expected to be a superset of - - - The message to include in the exception when an element in - is not found in . - The message is shown in test results. - - - Thrown if an element in is not found in - . - - - - - Tests whether one collection is a subset of another collection and - throws an exception if any element in the subset is not also in the - superset. - - - The collection expected to be a subset of . - - - The collection expected to be a superset of - - - The message to include in the exception when an element in - is not found in . - The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if an element in is not found in - . - - - - - Tests whether one collection is not a subset of another collection and - throws an exception if all elements in the subset are also in the - superset. - - - The collection expected not to be a subset of . - - - The collection expected not to be a superset of - - - Thrown if every element in is also found in - . - - - - - Tests whether one collection is not a subset of another collection and - throws an exception if all elements in the subset are also in the - superset. - - - The collection expected not to be a subset of . - - - The collection expected not to be a superset of - - - The message to include in the exception when every element in - is also found in . - The message is shown in test results. - - - Thrown if every element in is also found in - . - - - - - Tests whether one collection is not a subset of another collection and - throws an exception if all elements in the subset are also in the - superset. - - - The collection expected not to be a subset of . - - - The collection expected not to be a superset of - - - The message to include in the exception when every element in - is also found in . - The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if every element in is also found in - . - - - - - Tests whether two collections contain the same elements and throws an - exception if either collection contains an element not in the other - collection. - - - The first collection to compare. This contains the elements the test - expects. - - - The second collection to compare. This is the collection produced by - the code under test. - - - Thrown if an element was found in one of the collections but not - the other. - - - - - Tests whether two collections contain the same elements and throws an - exception if either collection contains an element not in the other - collection. - - - The first collection to compare. This contains the elements the test - expects. - - - The second collection to compare. This is the collection produced by - the code under test. - - - The message to include in the exception when an element was found - in one of the collections but not the other. The message is shown - in test results. - - - Thrown if an element was found in one of the collections but not - the other. - - - - - Tests whether two collections contain the same elements and throws an - exception if either collection contains an element not in the other - collection. - - - The first collection to compare. This contains the elements the test - expects. - - - The second collection to compare. This is the collection produced by - the code under test. - - - The message to include in the exception when an element was found - in one of the collections but not the other. The message is shown - in test results. - - - An array of parameters to use when formatting . - - - Thrown if an element was found in one of the collections but not - the other. - - - - - Tests whether two collections contain the different elements and throws an - exception if the two collections contain identical elements without regard - to order. - - - The first collection to compare. This contains the elements the test - expects to be different than the actual collection. - - - The second collection to compare. This is the collection produced by - the code under test. - - - Thrown if the two collections contained the same elements, including - the same number of duplicate occurrences of each element. - - - - - Tests whether two collections contain the different elements and throws an - exception if the two collections contain identical elements without regard - to order. - - - The first collection to compare. This contains the elements the test - expects to be different than the actual collection. - - - The second collection to compare. This is the collection produced by - the code under test. - - - The message to include in the exception when - contains the same elements as . The message - is shown in test results. - - - Thrown if the two collections contained the same elements, including - the same number of duplicate occurrences of each element. - - - - - Tests whether two collections contain the different elements and throws an - exception if the two collections contain identical elements without regard - to order. - - - The first collection to compare. This contains the elements the test - expects to be different than the actual collection. - - - The second collection to compare. This is the collection produced by - the code under test. - - - The message to include in the exception when - contains the same elements as . The message - is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if the two collections contained the same elements, including - the same number of duplicate occurrences of each element. - - - - - Tests whether all elements in the specified collection are instances - of the expected type and throws an exception if the expected type is - not in the inheritance hierarchy of one or more of the elements. - - - The collection containing elements the test expects to be of the - specified type. - - - The expected type of each element of . - - - Thrown if an element in is null or - is not in the inheritance hierarchy - of an element in . - - - - - Tests whether all elements in the specified collection are instances - of the expected type and throws an exception if the expected type is - not in the inheritance hierarchy of one or more of the elements. - - - The collection containing elements the test expects to be of the - specified type. - - - The expected type of each element of . - - - The message to include in the exception when an element in - is not an instance of - . The message is shown in test results. - - - Thrown if an element in is null or - is not in the inheritance hierarchy - of an element in . - - - - - Tests whether all elements in the specified collection are instances - of the expected type and throws an exception if the expected type is - not in the inheritance hierarchy of one or more of the elements. - - - The collection containing elements the test expects to be of the - specified type. - - - The expected type of each element of . - - - The message to include in the exception when an element in - is not an instance of - . The message is shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if an element in is null or - is not in the inheritance hierarchy - of an element in . - - - - - Tests whether the specified collections are equal and throws an exception - if the two collections are not equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects. - - - The second collection to compare. This is the collection produced by the - code under test. - - - Thrown if is not equal to - . - - - - - Tests whether the specified collections are equal and throws an exception - if the two collections are not equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects. - - - The second collection to compare. This is the collection produced by the - code under test. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified collections are equal and throws an exception - if the two collections are not equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects. - - - The second collection to compare. This is the collection produced by the - code under test. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified collections are unequal and throws an exception - if the two collections are equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects - not to match . - - - The second collection to compare. This is the collection produced by the - code under test. - - - Thrown if is equal to . - - - - - Tests whether the specified collections are unequal and throws an exception - if the two collections are equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects - not to match . - - - The second collection to compare. This is the collection produced by the - code under test. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - Thrown if is equal to . - - - - - Tests whether the specified collections are unequal and throws an exception - if the two collections are equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects - not to match . - - - The second collection to compare. This is the collection produced by the - code under test. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Tests whether the specified collections are equal and throws an exception - if the two collections are not equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects. - - - The second collection to compare. This is the collection produced by the - code under test. - - - The compare implementation to use when comparing elements of the collection. - - - Thrown if is not equal to - . - - - - - Tests whether the specified collections are equal and throws an exception - if the two collections are not equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects. - - - The second collection to compare. This is the collection produced by the - code under test. - - - The compare implementation to use when comparing elements of the collection. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - Thrown if is not equal to - . - - - - - Tests whether the specified collections are equal and throws an exception - if the two collections are not equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects. - - - The second collection to compare. This is the collection produced by the - code under test. - - - The compare implementation to use when comparing elements of the collection. - - - The message to include in the exception when - is not equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not equal to - . - - - - - Tests whether the specified collections are unequal and throws an exception - if the two collections are equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects - not to match . - - - The second collection to compare. This is the collection produced by the - code under test. - - - The compare implementation to use when comparing elements of the collection. - - - Thrown if is equal to . - - - - - Tests whether the specified collections are unequal and throws an exception - if the two collections are equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects - not to match . - - - The second collection to compare. This is the collection produced by the - code under test. - - - The compare implementation to use when comparing elements of the collection. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - Thrown if is equal to . - - - - - Tests whether the specified collections are unequal and throws an exception - if the two collections are equal. Equality is defined as having the same - elements in the same order and quantity. Different references to the same - value are considered equal. - - - The first collection to compare. This is the collection the tests expects - not to match . - - - The second collection to compare. This is the collection produced by the - code under test. - - - The compare implementation to use when comparing elements of the collection. - - - The message to include in the exception when - is equal to . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is equal to . - - - - - Constructs a dictionary containing the number of occurrences of each - element in the specified collection. - - - The collection to process. - - - The number of null elements in the collection. - - - A dictionary containing the number of occurrences of each element - in the specified collection. - - - - - Determines whether the first collection is a subset of the second - collection. If either set contains duplicate elements, the number - of occurrences of the element in the subset must be less than or - equal to the number of occurrences in the superset. - - - The collection the test expects to be contained in . - - - The collection the test expects to contain . - - - True if is a subset of - , false otherwise. - - - - - Finds a mismatched element between the two collections. A mismatched - element is one that appears a different number of times in the - expected collection than it does in the actual collection. The - collections are assumed to be different non-null references with the - same number of elements. The caller is responsible for this level of - verification. If there is no mismatched element, the function returns - false and the out parameters should not be used. - - The first collection to compare. - The second collection to compare. - - The expected number of occurrences of - or 0 if there is no mismatched - element. - - - The actual number of occurrences of - or 0 if there is no mismatched - element. - - - The mismatched element (may be null) or null if there is no - mismatched element. - - - true if a mismatched element was found; false otherwise. - - - - - compares the objects using object.Equals - - - - - This class is designed to help user doing unit testing. - GenericParameterHelper satisfies some comment generic type constraints - such as: - 1. public default constructor - 2. implements common interface: IComparable, IEnumerable, ICloneable - - - - - - public default constructor, satisfies the constraint in C# generics. - This constructor initializes the Data property to a random value. - - - - - This constructor initializes the Data property to a user-supplied value - - - - - - Do the value comparison for two GenericParameterHelper object - - object to do comparison with - true if obj has the same value as 'this' GenericParameterHelper object. - false otherwise. - - - - Returns a hash code for this object. - - - - - - Compares to the object. - - - - - - - Returns an IEnumerator object whose length is derived from - the Data property. - - - - - - Returns a GenericParameterHelper object that is equal to - 'this' one. - - - - - - Gets or sets the Data property. - - - - - Provides method signature discovery for generic methods. - - - - - Given a set of methods that match the base criteria, select a method based - upon an array of types. This method should return null if no method matches - the criteria. - - - - - Set of string assertions. - - - - - Tests whether the specified string contains the specified substring - and throws an exception if the substring does not occur within the - test string. - - - The string that is expected to contain . - - - The string expected to occur within . - - - Thrown if is not found in - . - - - - - Tests whether the specified string contains the specified substring - and throws an exception if the substring does not occur within the - test string. - - - The string that is expected to contain . - - - The string expected to occur within . - - - The message to include in the exception when - is not in . The message is shown in - test results. - - - Thrown if is not found in - . - - - - - Tests whether the specified string contains the specified substring - and throws an exception if the substring does not occur within the - test string. - - - The string that is expected to contain . - - - The string expected to occur within . - - - The message to include in the exception when - is not in . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if is not found in - . - - - - - Tests whether the specified string begins with the specified substring - and throws an exception if the test string does not start with the - substring. - - - The string that is expected to begin with . - - - The string expected to be a prefix of . - - - Thrown if does not begin with - . - - - - - Tests whether the specified string begins with the specified substring - and throws an exception if the test string does not start with the - substring. - - - The string that is expected to begin with . - - - The string expected to be a prefix of . - - - The message to include in the exception when - does not begin with . The message is - shown in test results. - - - Thrown if does not begin with - . - - - - - Tests whether the specified string begins with the specified substring - and throws an exception if the test string does not start with the - substring. - - - The string that is expected to begin with . - - - The string expected to be a prefix of . - - - The message to include in the exception when - does not begin with . The message is - shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if does not begin with - . - - - - - Tests whether the specified string ends with the specified substring - and throws an exception if the test string does not end with the - substring. - - - The string that is expected to end with . - - - The string expected to be a suffix of . - - - Thrown if does not end with - . - - - - - Tests whether the specified string ends with the specified substring - and throws an exception if the test string does not end with the - substring. - - - The string that is expected to end with . - - - The string expected to be a suffix of . - - - The message to include in the exception when - does not end with . The message is - shown in test results. - - - Thrown if does not end with - . - - - - - Tests whether the specified string ends with the specified substring - and throws an exception if the test string does not end with the - substring. - - - The string that is expected to end with . - - - The string expected to be a suffix of . - - - The message to include in the exception when - does not end with . The message is - shown in test results. - - - An array of parameters to use when formatting . - - - Thrown if does not end with - . - - - - - Tests whether the specified string matches a regular expression and - throws an exception if the string does not match the expression. - - - The string that is expected to match . - - - The regular expression that is - expected to match. - - - Thrown if does not match - . - - - - - Tests whether the specified string matches a regular expression and - throws an exception if the string does not match the expression. - - - The string that is expected to match . - - - The regular expression that is - expected to match. - - - The message to include in the exception when - does not match . The message is shown in - test results. - - - Thrown if does not match - . - - - - - Tests whether the specified string matches a regular expression and - throws an exception if the string does not match the expression. - - - The string that is expected to match . - - - The regular expression that is - expected to match. - - - The message to include in the exception when - does not match . The message is shown in - test results. - - - An array of parameters to use when formatting . - - - Thrown if does not match - . - - - - - Tests whether the specified string does not match a regular expression - and throws an exception if the string matches the expression. - - - The string that is expected not to match . - - - The regular expression that is - expected to not match. - - - Thrown if matches . - - - - - Tests whether the specified string does not match a regular expression - and throws an exception if the string matches the expression. - - - The string that is expected not to match . - - - The regular expression that is - expected to not match. - - - The message to include in the exception when - matches . The message is shown in test - results. - - - Thrown if matches . - - - - - Tests whether the specified string does not match a regular expression - and throws an exception if the string matches the expression. - - - The string that is expected not to match . - - - The regular expression that is - expected to not match. - - - The message to include in the exception when - matches . The message is shown in test - results. - - - An array of parameters to use when formatting . - - - Thrown if matches . - - - - - TestContext class. This class should be fully abstract and not contain any - members. The adapter will implement the members. Users in the framework should - only access this via a well-defined interface. - - - - - Used to write trace messages while the test is running - - format string - the arguments - - - - Adds a file name to the list in TestResult.ResultFileNames - - - - - Begins a timer with the specified name - - - - - Ends a timer with the specified name - - - - - Per test properties - - - - - - Current data row when test is used for data driven testing. - - - - - Current data connection row when test is used for data driven testing. - - - - - Gets the test logs directory. - - - - - Gets the test directory. - - - - - Gets the test deployment directory. - - - - - Gets the test name. - - - - - Gets the CurrentTestOutcome. - - - - - Outcome of a test or a run. - If a new successful state needs to be added you will need to modify - RunResultAndStatistics in TestRun and TestOutcomeHelper below. - - NOTE: the order is important and is used for computing outcome for aggregations. - More important outcomes come first. See TestOutcomeHelper.GetAggregationOutcome. - - - - - Test was executed, but there were issues. - Issues may involve exceptions or failed assertions. - - - - - Test has completed, but we can't say if it passed or failed. - May be used for aborted tests... - - - - - Test was executed w/o any issues. - - - - - Test is currently executing. - - - - - There was a system error while we were trying to execute a test. - - - - - The test timed out. - - - - - Test was aborted by the user. - - - - - Test is in an unknown state - - - - - The data row. - - - - - The database connection. - - - - - Marks a test class. - - - - - Initializes a new test class attribute. - - - - - Marks a test method. - - - - - Initializes a new TestMethodAttribute. - - - - - A method marker called before a test method runs. - - - - - Initializes a new TestInitializeAttribute. - - - - - A method marker called after a test method runs. - - - - - Initializes a new TestCleanupAttribute. - - - - - Ignores a unit test. - - - - - Initializes a new IgnoreAttribute. - - - - - The ExpectedExceptionAttribute. - - - - - Initializes the ExpectedExceptionAttribute. - - The exception type. - - - - Initializes the ExpectedExceptionAttribute. - - The exception type. - The message. - - - - Gets the exception type. - - - - - Gets the message. - - - - - The test property attribute. - - - - - Initializes the TestPropertyAttribute. - - - - - - - Gets the name. - - - - - Gets the value. - - - - - The ClassInitializeAttribute. - - - - - Initializes the ClassInitializeAttribute. - - - - - The ClassCleanupAttribute. - - - - - Initializes the ClassCleanupAttribute. - - - - - The AssemblyInitializeAttribute. - - - - - Initializes the AssemblyInitializeAttribute. - - - - - The AssemblyCleanupAttribute. - - - - - Initializes the AssemblyCleanupAttribute. - - - - - Description of the test. - - - - - Initializes the DescriptionAttribute. - - The description. - - - - Gets the description. - - - - - The OwnerAttribute. - - - - - Initializes the OwnerAttribute. - - The owner. - - - - Gets the owner. - - - - - CSS Project Structure URI. - - - - - Initializes the CSS Project Structure URI. - - The structure. - - - - Gets the property structure. - - - - - CSS Iteration URI - - - - - Initializes the CssIterationAttribute. - - The parameter. - - - - Gets the CssIteration. - - - - - Priority attribute; used to specify the priority of a unit test. - - - - - Initializes the PriorityAttribute. - - The priority. - - - - Gets the Priority. - - - - - Timeout attribute; used to specify the timeout of a unit test. - - - - - Initializes the TimeoutAttribute. - - - - - - Gets the Timeout. - - - - - WorkItem attribute; used to specify a work item associated with this test. - - - - - Initializes the WorkItemAttribute. - - - - - - Gets the ID. - - - - - HostType specifies the type of host that this unit test will - run in. - - - - - Initializes the host type attribute. - - - - - - Constructor of HostTypeAttribute. - - The type of the host. - Custom data for the host adapter. - - - The reason this is string (and not object) is that currently CMI cannot parse arbitrary instances of object and we deprioritized changing CMI. - - - - Gets the host type. - - - - - Gets the host data. - - - - - Used to specify deployment item (file or directory) for per-test deployment. - Can be specified on test class or test method. - Can have multiple instances of the attribute to specify more than one item. - The item path can be absolute or relative, if relative, it is relative to RunConfig.RelativePathRoot. - - - [DeploymentItem("file1.xml")] - [DeploymentItem("file2.xml", "DataFiles")] - [DeploymentItem("bin\Debug")] - - - - - Initializes DeploymentItemAttribute. - - The path. - - - - Initializes DeploymentItemAttribute. - - The path. - The output directory. - - - - Verifiable interface. - - - - - The IsValid method. - - Returns a value. - - - diff --git a/dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.dll b/dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.dll deleted file mode 100644 index e05a9664c672c0e6c263ed48f9fd49daa0091843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154624 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õ&! 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%0DZhWR^Qf3Lw5y^#~YrG6a3!$(RC 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 Q5AM84@c%#94>bk;FV;Dz_W%F@ diff --git a/dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.xml b/dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.xml deleted file mode 100644 index d76b7b78426..00000000000 --- a/dep/FluentAssertions.2.0.0.1/lib/winrt45/FluentAssertions.xml +++ /dev/null @@ -1,5513 +0,0 @@ - - - - FluentAssertions - - - - - Initializes a new instance of the class. - - - - - Contains extension methods for custom assertions in unit tests. - - - - - Invokes the specified action on an subject so that you can chain it with any of the ShouldThrow or ShouldNotThrow - overloads. - - - - - Provides methods for asserting the execution time of a method or property. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Provides methods for asserting the execution time of a method or property. - - A reference to the method or property to measure the execution time of. - - Returns an object for asserting that the execution time matches certain conditions. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the throws an exception. - - A reference to the method or property. - - The type of the exception it should throw. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - Returns an object that allows asserting additional members of the thrown exception. - - - - - Asserts that the does not throw a particular exception. - - The current method or property. - - The type of the exception it should not throw. Any other exceptions are ignored and will satisfy the assertion. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the does not throw any exception at all. - - The current method or property. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Forces enumerating a collection. Should be used to assert that a method that uses the - yield keyword throws a particular exception. - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current . - - - - - Returns an object that can be used to assert the - current nullable . - - - - - Returns a object that can be used to assert the - current . - - - - - Returns a object that can be used to assert the methods returned by the - current . - - - - - - Returns a object that can be used to assert the properties returned by the - current . - - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - Notice that actual behavior is determined by the instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object is equivalent to another object. - - - Objects are equivalent when both object graphs have equally named properties with the same value, - irrespective of the type of those objects. Two properties are also equal if one type can be converted to another and the result is equal. - The type of a collection property is ignored as long as the collection implements and all - items in the collection are structurally equal. - - - A reference to the configuration object that can be used - to influence the way the object graphs are compared. You can also provide an alternative instance of the - class. - - - An optional formatted phrase as is supported by explaining why the - assertion is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Safely casts the specified object to the type specified through . - - - Has been introduced to allow casting objects without breaking the fluent API. - - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Contains a number of methods to assert that a reference type object is in the expected state. - - - - - Asserts that the object is of the specified type . - - The expected type of the object. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the object is assignable to a variable of type . - - The type to which the object should be assignable. - The reason why the object should be assignable to the type. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Asserts that the is satisfied. - - The predicate which must be statisfied by the . - The reason why the predicate should be satisfied. - The parameters used when formatting the . - An which can be used to chain assertions. - - - - Gets the object which value is being asserted. - - - - - Asserts that the number of items in the collection matches the supplied amount. - - The expected number of items in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the collection matches a condition stated by the . - - A predicate that yields the number of items that is expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any duplicate items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not contain any null items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all the same elements in the same order as the collection identified by - . Elements are compared using their . - - An with the elements that are not expected. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - A params array with the expected elements. - - - - Expects the current collection to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection not to contain all elements of the collection identified by , - regardless of the order. Elements are compared using their . - - An with the unexpected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection only contains items that are assignable to the type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in any order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - - - Expects the current collection to contain the specified elements in the exact same order. Elements are compared - using their implementation. - - An with the expected elements. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Expects the current collection to have all elements in the specified . - Elements are compared using their implementation. - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in descending order. Elements are compared - using their implementation. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current collection does not have all elements in ascending order. Elements are compared - using their implementation. - - - - - Asserts that the collection is a subset of the . - - An with the expected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection is not a subset of the . - - An with the unexpected superset. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Assert that the current collection has the same number of elements as . - - The other collection with the same expected number of elements - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has not been initialized yet with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has been initialized with an actual collection. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection has the supplied at the - supplied . - - The index where the element is expected - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current collection does not contain the supplied item. - - The element that is not expected to be in the collection - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection shares one or more items with the specified . - - The with the expected shared items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection does not share any items with the specified . - - The to compare to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expectation state. - - - - - Asserts that two collections contain the same items in the same order, where equality is determined using a - predicate. - - - The collection to compare the subject with. - - - A predicate the is used to determine whether two objects should be treated as equal. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the collection contains the specified item. - - The expectation item. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection contains some extra items in addition to the original items. - - An of expectation items. - Additional items that are expectation to be contained by the collection. - - - - Asserts that the collection contains at least one item that matches the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection only contains items that match a predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the collection does not contain any items that match the predicate. - - A predicate to match the items in the collection against. - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Expects the current collection to contain only a single item matching the specified . - - The predictes that will be used to find the matching items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current dictionary has not been initialized yet with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary has been initialized with an actual dictionary. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches the supplied amount. - - The expected number of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the number of items in the dictionary matches a condition stated by a predicate. - - The predicate which must be statisfied by the amount of items. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary does not contain any items. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains at least 1 item. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The expected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts the current dictionary not to contain all the same key-value pairs as the - specified dictionary. Keys and values are compared using - their implementation. - - The unexpected dictionary - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified key. Keys are compared using - their implementation. - - The expected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - - - Asserts that the dictionary contains all of the specified keys. Keys are compared using - their implementation. - - The expected keys - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified key. - Keys are compared using their implementation. - - The unexpected key - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains the specified value. Values are compared using - their implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - - - Asserts that the dictionary contains all of the specified values. Values are compared using - their implementation. - - The expected values - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified value. - Values are compared using their implementation. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified . - Keys and values are compared using their implementation. - - The expected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary contains the specified for the supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified . - Keys and values are compared using their implementation. - - The unexpected - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current dictionary does not contain the specified for the - supplied . Values are compared using their implementation. - - The key for which to validate the value - The value to validate - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the current collection contains the specified object. Elements are compared - using their implementation. - - An object, or of objects that are expected to be in the collection. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a dotted path of property names representing the property expression. E.g. Parent.Child.Sibling.Name. - - - - - Finds the first index at which the does not match the - string anymore, including the exact casing. - - - - - Finds the first index at which the does not match the - string anymore, accounting for the specified . - - - - - Gets the quoted three characters at the specified index of a string, including the index itself. - - - - - Replaces all characters that might conflict with formatting placeholders and newlines with their escaped counterparts. - - - - - Joins a string with one or more other strings using a specified separator. - - - Any string that is empty (including the original string) is ignored. - - - - - Determines whether two objects refer to the same property. - - - - - Finds the property by a case-sensitive name. - - - Returns null if no such property exists. - - - - - Determines whether the specified method has been annotated with a specific attribute. - - - true if the specified method has attribute; otherwise, false. - - - - - Provides extension methods for monitoring and querying events. - - - - - Starts monitoring an object for its events. - - Thrown if eventSource is Null. - - - - Asserts that an object has raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised, or - null to refer to all properties. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that an object has not raised the event for a particular property. - - The object exposing the event. - - A lambda expression referring to the property for which the property changed event should have been raised. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - You must call on the same object prior to this call so that Fluent Assertions can - subscribe for the events of the object. - - - - - Asserts that all occurences of the event originated from the . - - - - - Asserts that at least one occurrence of the event had an object matching a predicate. - - - - - Records activity for a single event. - - - - - Records raised events for one event on one object - - - - - Store information about a raised event - - Parameters the event was raised with - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - - The object events are recorded from - The name of the event that's recorded - - - - Enumerate raised events - - - - - Enumerate raised events - - - - - - Called by the auto-generated IL, to record information about a raised event. - - - - - The object events are recorded from - - - - - The name of the event that's recorded - - - - - Simple dictionary that uses a to the event source as the key. - This should ensure the Garbage Collector can still clean-up the event source object. - - - - - This class is used to store data about an intercepted event - - - - - Default constructor stores the parameters the event was raised with - - - - - Parameters for the event - - - - - Helper class for verifying a condition and/or throwing a test harness specific exception representing an assertion failure. - - - - - Gets an object that wraps and executes a conditional or unconditional verification. - - - - - Provides a fluent API for verifying an arbitrary condition. - - - - - Represents the phrase that can be used in as a placeholder for the reason of an assertion. - - - - - Initializes a new instance of the class. - - - - - Gets the name or identifier of the current subject, or a default value if the subject is not known. - - - - - Specify the condition that must be satisfied. - - If true the verification will be succesful. - - - - Specify a predicate that with the condition that must be satisfied. - - - - - Specify the reason why you expect the condition to be true. - - - A formatted phrase explaining why the condition should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Define the failure message for the verification. - - - If the contains the text "{reason}", this will be replaced by the reason as - defined through . Only 10 are supported in combination with - a {reason}. - - The format string that represents the failure message. - Optional arguments for the - - - - Indicates that every argument passed into is displayed on a separate line. - - - - - Gets or sets the name of the subject for the next verification. - - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - new DateTime(2011, 3, 10)
      -
      - you can write 3.March(2011)
      -
      - Or even
      -
      - 3.March(2011).At(09, 30) -
      - -
      - - - Returns a new value for the specified and - in the month January. - - - - - Returns a new value for the specified and - in the month February. - - - - - Returns a new value for the specified and - in the month March. - - - - - Returns a new value for the specified and - in the month April. - - - - - Returns a new value for the specified and - in the month May. - - - - - Returns a new value for the specified and - in the month June. - - - - - Returns a new value for the specified and - in the month July. - - - - - Returns a new value for the specified and - in the month August. - - - - - Returns a new value for the specified and - in the month September. - - - - - Returns a new value for the specified and - in the month October. - - - - - Returns a new value for the specified and - in the month November. - - - - - Returns a new value for the specified and - in the month December. - - - - - Returns a new value for the specified and . - - - - - Returns a new value for the specified and time with the specified - , and optionally . - - - - - Returns a new value that is the current before the - specified . - - - - - Returns a new value that is the current after the - specified . - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Determines whether this instance can handle the specified value. - - The value. - - true if this instance can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Provides services for formatting an object being used in an assertion in a human readable format. - - - - - A list of objects responsible for formatting the objects represented by placeholders. - - - - - Returns a human-readable representation of a particular object. - - The value for which to create a . - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - Indicates whether the formatter should use line breaks when the specific supports it. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Indicates whether the current can handle the specified . - - The value for which to create a . - - true if the current can handle the specified value; otherwise, false. - - - - - Returns a that represents this instance. - - The value for which to create a . - - - A collection of objects that - - - The level of nesting for the supplied value. This is used for indenting the format string for objects that have - no override. - - - A that represents this instance. - - - - - Contains a number of extension methods for floating point . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts a floating point value approximates another value as close as possible. - - The object that is being extended. - - The expected value to compare the actual value with. - - - The maximum amount of which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the subject is considered equal to another object according to the implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is not equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is less than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the subject is greater than or equal to another object according to its implementation of . - - - The object to pass to the subject's method. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is exactly the same as the value. - - The expected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the integral number value is not the same as the value. - - The unexpected value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is less than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the numeric value is greater than or equal to the specified value. - - The value to compare the current numeric value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is within a range. - - - Where the range is continuous or incremental depends on the actual type of the value. - - - The minimum valid value of the range. - - - The maximum valid value of the range. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - - - Asserts that a value is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable numeric value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Asserts that the value is false. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Defines the way compares the expected exception - message with the actual one. - - - - - The message must match exactly, including the casing of the characters. - - - - - The message must match except for the casing of the characters. - - - - - The message must start with the exact text, including the casing of the characters.. - - - - - The message must start with the text except for the casing of the characters. - - - - - The message must contain the exact text. - - - - - The message must contain the text except for the casing of the characters. - - - - - The message must match a wildcard pattern consisting of ordinary characters as well as * and ?. - - - - - Contains a number of methods to assert that a is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that the current is exactly equal to the value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is not equal to the value. - - The unexpected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is within the specified number of milliseconds (default = 20 ms) - from the specified value. - - - Use this assertion when, for example the database truncates datetimes to nearest 20ms. If you want to assert to the exact datetime, - use . - - - The expected time to compare the actual value with. - - - The maximum amount of milliseconds which the two values may differ. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is before the specified value. - - The that the current value is expected to be before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or before the specified value. - - The that the current value is expected to be on or before. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is after the specified value. - - The that the current value is expected to be after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is either on, or after the specified value. - - The that the current value is expected to be on or after. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the year. - - The expected year of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the month. - - The expected month of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the day. - - The expected day of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the hour. - - The expected hour of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the minute. - - The expected minutes of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has the second. - - The expected seconds of the current value. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Returns a object that can be used to assert that the current - exceeds the specified compared to another . - - - The amount of time that the current should exceed compared to another . - - - - - Returns a object that can be used to assert that the current - is equal to or exceeds the specified compared to another . - - - The amount of time that the current should be equal or exceed compared to - another . - - - - - Returns a object that can be used to assert that the current - differs exactly the specified compared to another . - - - The amount of time that the current should differ exactly compared to another . - - - - - Returns a object that can be used to assert that the current - is within the specified compared to another . - - - The amount of time that the current should be within another . - - - - - Returns a object that can be used to assert that the current - differs at maximum the specified compared to another . - - - The maximum amount of time that the current should differ compared to another . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a is in the correct state. - - - - - Asserts that the is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is equal to the GUID. - - The expected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is not equal to the GUID. - - The unexpected value to compare the actual value with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable boolean value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable boolean value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the value is equal to the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - You can use the for a more fluent way of specifying a . - - - - - Contains a number of methods to assert that a nullable is in the expected state. - - - - - Asserts that the time difference of the current is greater than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than zero. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is equal to the - specified time. - - The expected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is not equal to the - specified time. - - The unexpected time difference - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is less than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the time difference of the current is greater than or equal to the - specified time. - - The time difference to which the current value will be compared - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Asserts that a nullable value is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a nullable value is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Asserts that an object equals another object using its implementation. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that an object does not equal another object using it's method. - - The unexpected value - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to the exact same object as another object reference. - - The expected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that an object reference refers to a different object than another object reference refers to. - - The unexpected object - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the object is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Contains a number of methods to assert that a is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that a string is exactly the same as another string, including the casing and any leading or trailing whitespace. - - The expected string. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - - - Asserts that the is one of the specified . - - - The values that are valid. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is exactly the same as another string, including any leading or trailing whitespace, with - the exception of the casing. - - - The string that the subject is expected to be equivalent to. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not exactly the same as the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to be equivalent to. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string matches a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not match a wildcard pattern. - - - The wildcard pattern with which the subject is matched, where * and ? have special meanings. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts exactly with the specified value, - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string starts with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to start with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends exactly with the specified , - including the casing and any leading or trailing whitespace. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string ends with the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to end with. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains another (fragment of a) string. - - - The (fragement of a) string that the current string should contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string contains the specified , - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain another (fragment of a) string. - - - The (fragement of a) string that the current string should not contain. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string does not contain the specified string, - including any leading or trailing whitespace, with the exception of the casing. - - The string that the subject is not expected to contain. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string has the specified length. - - The expected length of the string - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is not null. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that a string is neither null nor . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or . - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is neither null nor nor white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a string is either null or or white space - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the object which value is being asserted. - - - - - Dedicated class for comparing two strings and generating consistent error messages. - - - - - Gets or sets a value indicating whether the subject should not match the pattern. - - - - - Gets or sets a value indicating whether the matching process should ignore any casing difference. - - - - - Contains a number of methods to assert that two objects differ in the expected way. - - - You can use the and for a more fluent - way of specifying a or a . - - - - - Asserts that a occurs a specified amount of time before another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that a occurs a specified amount of time after another . - - - The to compare the subject with. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides the logic and the display text for a . - - - - - Contains a number of methods to assert that an yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not throw any exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - - - - Contains a number of methods to assert that an is in the correct state. - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception has a message that matches - depending on the specified matching mode. - - - The expected message of the exception. - - - Determines how the expected message is compared with the actual message. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - - - - Asserts that the thrown exception contains an inner exception of type . - - The expected type of the inner exception. - The reason why the inner exception should be of the supplied type. - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the thrown exception contains an inner exception with the . - - The expected message of the inner exception. - Determines how the expected message is compared with the actual message. - - The reason why the message of the inner exception should match . - - The parameters used when formatting the . - - - - Asserts that the exception matches a particular condition. - - - The condition that the exception must match. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Gets the exception object of the exception thrown. - - - - - Provides methods for asserting that the execution time of an satifies certain conditions. - - - - - Initializes a new instance of the class. - - The action of which the execution time must be asserted. - - - - Asserts that the execution time of the operation does not exceed a specified amount of time. - - - The maximum allowed duration. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Provides methods for asserting that the execution time of an object member satifies certain conditions. - - - - - - Initializes a new instance of the class. - - The object that exposes the method or property. - A reference to the method or property to measure the execution time of. - - - - Selection rule that adds all public properties of the subject as far as they are defined on the declared - type. - - - - - Represents a rule that defines which properties of the subject-under-test to include while comparing - two objects for structural equality. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - Type info about the subject. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Selection rule that adds all public properties of the subject based on its run-time type rather than its - declared type. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - General purpose implementation of that uses a predicate to determine whether - this rule applies to a particular property and executes an action to assert equality. - - The type of the subject. - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Defines how a subject's property is compared for equality with the same property of the expectation. - - - Provides details about the subject's property. - - - The value of the subject's property. - - - The value of a property on expectation object that was identified - - - Returns true if the rule was applied correctly and the assertion didn't cause any exceptions. - Returns false if this rule doesn't support the subject's type. - Throws if the rule did support the data type but assertion fails. - - - - - Provides the required information for executing an equality assertion between a subject and an expectation. - - The type of the subject. - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the value of the - - - - - Gets the value of the expectation object that was matched with the subject using a . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Selection rule that removes a particular property from the structural comparison based on a predicate. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides details about the subject's root or nested property. - - - - - Gets the of the property that returned the current object, or null if the current - object represents the root object. - - - - - Gets the full path from the root object until the current object separated by dots. - - - - - Gets a display-friendly representation of the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Represents a selection context of a nested property - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Is responsible for the exact run-time behavior of a structural equality comparison. - - The type of the subject. - - - - Provides the run-time details of the class. - - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets or sets a value indicating whether or not the assertion must perform a deep comparison. - - - - - Gets a configuration that compares all declared properties of the subject with equally named properties of the expectation, - and includes the entire object graph. The names of the properties between the subject and expectation must match. - - - - - Gets a configuration that by default doesn't include any of the subject's properties and doesn't consider any nested objects - or collections. - - - - - Adds all public properties of the subject as far as they are defined on the declared type. - - - - - Adds all public properties of the subject based on its run-time type rather than its declared type. - - - - - Tries to match the properties of the subject with equally named properties on the expectation. Ignores those - properties that don't exist on the expectation. - - - - - Requires the expectation to have properties which are equally named to properties on the subject. - - - - - - Excludes the specified (nested) property from the structural equality check. - - - - - Excludes a (nested) property based on a predicate from the structural equality check. - - - - - Includes the specified property in the equality check. - - - This overrides the default behavior of including all declared properties. - - - - - The assertion to execute when the predicate is met. - - - - - Causes the structural equality check to include nested collections and complex types. - - - - - Causes the structural equality check to ignore any cyclic references. - - - By default, cyclic references within the object graph will cause an exception to be thrown. - - - - - Clears all selection rules, including those that were added by default. - - - - - Clears all matching rules, including those that were added by default. - - - - - Adds a selection rule to the ones allready added by default and which is evaluated after all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules. - - - - - Adds a matching rule to the ones allready added by default and which is evaluated before all existing rules - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Gets an ordered collection of selection rules that define what properties are included. - - - - - Gets an ordered collection of matching rules that determine which subject properties are matched with which - expectation properties. - - - - - Gets an ordered collection of assertion rules that determine how subject properties are compared for equality with - expectation properties. - - - - - Gets value indicating whether the equality check will include nested collections and complex types. - - - - - Gets value indicating how cyclic references should be handled. By default, it will throw an exception. - - - - - Defines additional overrides when used with - - - - - Allows overriding the way structural equality is applied to (nested) objects of tyoe - - - - - Allows overriding the way structural equality is applied to particular properties. - - - A predicate based on the of the subject that is used to identify the property for which the - override applies. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Indication of how cyclic references should be handled when validating equality of nested properties. - - - - - Cyclic references will be ignored. - - - - - Cyclic references will result in an exception. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Selection rule that removes a particular property from the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Represents a rule that defines how to map the properties from the subject-under-test with the properties - on the expectation object. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Selection rule that includes a particular property in the structural comparison. - - - - - Adds or removes properties to/from the collection of subject properties that must be included while - comparing two objects for structural equality. - - - A collection of properties that was prepopulated by other selection rules. Can be empty. - - The collection of properties after applying this rule. Can contain less or more than was passed in. - - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Provides information on a particular property during an assertion for structural equality of two object graphs. - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a verification object associated with the current and . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the value of the - - - - - Requires the expectation object to have a property with the exact same name. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Provides methods for selecting one or more properties of an object and comparing them with another object. - - - - - Includes all properties of when comparing the subject with another object using . - - - - - Includes all properties of including those of the run-time type when comparing the subject - with another object using . - - - - - Includes all properties of when comparing the subject with another object using , - except those that the other object does not have. - - - - - Perform recursive property comparison of the child properties for objects that are of incompatible type. - - - Indication of how cyclic references in the nested properties should be handled. By default this will result in an - exception, but if is specified, cyclic references will just be ignored. - - - - - Includes all properties of when comparing the subject with another object using , - except those specified using a property expression. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Excludes the properties specified by the from the comparison. - - A single property expression to exclude. - Optional list of additional property expressions to exclude. - - - - Includes only those properties of when comparing the subject with another object using - that were specified using a property expression. - - A single property expression to include. - Optional list of additional property expressions to include. - - - - Asserts that the previously selected properties of have the same value as the equally named - properties of . - - The object to compare the current object with - - Property values are considered equal if, after converting them to the requested type, calling - returns true. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Gets the of the property that returned the current object, or - null if the current object represents the root object. - - - - - Gets the full path from the root object until the current property, separated by dots. - - - - - Gets a textual description of the current property based on the . - - - - - Gets the value of the - - - - - Gets the property of the that was matched against the , - or null if is true. - - - - - Gets the value of the . - - - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - - - Zero or more objects to format using the placeholders in . - - - - - Gets a value indicating whether the current context represents the root of the object graph. - - - - - Gets the compile-time type of the current object. If the current object is not the root object, then it returns the - same as the property does. - - - - - Gets the run-time type of the current object. - - - - - Gets a verification object associated with the current and . - - - - - Is responsible for validating the equality of one or more properties of a subject with another object. - - - - - Gets a value indicating whether this step can handle the current subject and/or expectation. - - - - - Applies a step as part of the task to compare two objects for structural equality. - - - Should return true if the subject matches the expectation or if no additional assertions - have to be executed. Should return false otherwise. - - - May throw when preconditions are not met or if it detects mismatching data. - - - - - Finds a property of the expectation with the exact same name, but doesn't require it. - - - - - Attempts to find a property on the expectation that should be compared with the - during a structural equality. - - - Whether or not a match is required or optional is up to the specific rule. If no match is found and this is not an issue, - simply return null. - - - The of the subject's property for which a match must be found. Can never - be null. - - - The expectation object for which a matching property must be returned. Can never be null. - - - The dotted path from the root object to the current property. Will never be null. - - - Returns the of the property with which to compare the subject with, or null - if no match was found. - - - - - Returns a string that represents the current object. - - - A string that represents the current object. - - 2 - - - - Extension methods on to allow for a more fluent way of specifying a . - - - Instead of
      -
      - TimeSpan.FromHours(12)
      -
      - you can write
      -
      - 12.Hours()
      -
      - Or even
      -
      - 12.Hours().And(30.Minutes()). -
      - -
      - - - Returns a based on a number of milliseconds. - - - - - Returns a based on a number of seconds. - - - - - Returns a based on a number of seconds, and add the specified - . - - - - - Returns a based on a number of minutes. - - - - - Returns a based on a number of minutes, and add the specified - . - - - - - Returns a based on a number of hours. - - - - - Returns a based on a number of hours, and add the specified - . - - - - - Returns a based on a number of days. - - - - - Returns a based on a number of days, and add the specified - . - - - - - Convenience method for chaining multiple calls to the methods provided by this class. - - - 23.Hours().And(59.Minutes()) - - - - - Extension methods for getting method and property selectors for a type. - - - - - Returns the types that are visible outside the specified . - - - - - Returns a method selector for the current . - - - - - Returns a method selector for the current . - - - - - Returns a property selector for the current . - - - - - Returns a property selector for the current . - - - - - Static class that allows for a 'fluent' selection of the types from an . - - - AllTypes.From(myAssembly)
      - .ThatImplement<ISomeInterface>
      - .Should()
      - .BeDecoratedWith<SomeAttribute>() -
      -
      - - - Returns a for selecting the types that are visible outside the - specified . - - The assembly from which to select the types. - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class. - - The methods to assert. - - - - Asserts that the selected methods are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of methods of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select methods. - - - - Initializes a new instance of the class. - - The types from which to select methods. - - - - Only select the methods that return the specified type - - - - - Only select the methods that are decorated with an attribute of the specified type. - - - - - The resulting objects. - - - - - Determines whether the specified method has a special name (like properties and events). - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the methods that are public or internal. - - - - - Only select the methods without a return value - - - - - Contains assertions for the objects returned by the parent . - - - - - Initializes a new instance of the class, for a number of objects. - - The properties to assert. - - - - Asserts that the selected properties are virtual. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the selected methods are decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent selection of properties of a type through reflection. - - - - - Initializes a new instance of the class. - - The type from which to select properties. - - - - Initializes a new instance of the class. - - The types from which to select properties. - - - - Only select the properties that are decorated with an attribute of the specified type. - - - - - Only select the properties that return the specified type - - - - - The resulting objects. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Only select the properties that have a public or internal getter. - - - - - Contains a number of methods to assert that a meets certain expectations. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current type is equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is equal to the specified type. - - The expected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Creates an error message in case the specifed type differs from the - type. - - - An empty if the two specified types are the same, or an error message that describes that - the two specified types are not the same. - - - - - Asserts that the current type is not equal to the specified type. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current type is not equal to the specified type. - - The unexpected type - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with the specified . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current is decorated with an attribute of type - that matches the specified . - - - The predicate that the attribute must match. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Allows for fluent filtering a list of types. - - - - - Determines whether a type is a subclass of another type, but NOT the same type. - - - - - Determines whether a type implements an interface (but is not the interface itself). - - - - - Determines whether a type is decorated with a particular attribute. - - - - - Determines whether the namespace of type is exactly . - - - - - Determines whether the namespace of type is starts with . - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the attribute. - - The expected attribute - - - - Asserts that the current equals the attribute. - - The expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - - - Asserts that the current does not equal the attribute, - using its implementation. - - The unexpected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has the specified value. - - The expected value - - - - Asserts that the current has the specified value. - - The expected value - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - - - Asserts that the current equals the document, - using its implementation. - - The expected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - - - Asserts that the current does not equal the document, - using its implementation. - - The unexpected document - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - - - Asserts that the current has a root element with the specified - name. - - The name of the expected root element of the current document. - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - - - Asserts that the element of the current has a direct - child element with the specified name. - - - The name of the expected child element of the current document's Root element. - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an is in the expected state. - - - - - Initializes a new instance of the class. - - - - - Asserts that the current equals the element. - - The expected element - - - - Asserts that the current equals the element. - - The expected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - - - Asserts that the current does not equal the element, - using its implementation. - - The unexpected element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the is null. - - - - - Asserts that the is null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the is not null. - - - - - Asserts that the is not null. - - - A formatted phrase explaining why the assertion should be satisfied. If the phrase does not - start with the word because, it is prepended to the message. - - - Zero or more values to use for filling in any compatible placeholders. - - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - - - Asserts that the current has an attribute with the specified - and . - - The name of the expected attribute - The value of the expected attribute - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - - - Asserts that the current has a direct child element with the specified - name. - - The name of the expected child element - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the object which value is being asserted. - - - - - Contains a number of methods to assert that an asynchronous method yields the expected result. - - - - - Asserts that the current throws an exception of type . - - - A formatted phrase as is supported by explaining why the assertion - is needed. If the phrase does not start with the word because, it is prepended automatically. - - - Zero or more objects to format using the placeholders in . - - - - - Gets the that is being asserted. - - -
      -
      diff --git a/dep/NUnit.2.6.1/NUnit.2.6.1.nuspec b/dep/NUnit.2.6.1/NUnit.2.6.1.nuspec deleted file mode 100644 index 33d7c0d1838..00000000000 --- a/dep/NUnit.2.6.1/NUnit.2.6.1.nuspec +++ /dev/null @@ -1,26 +0,0 @@ - - - - NUnit - 2.6.1 - NUnit - Charlie Poole - Charlie Poole - http://nunit.org/nuget/license.html - http://nunit.org/ - http://nunit.org/nuget/nunit_32x32.png - false - NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. - -Version 2.6 is the seventh major release of this well-known and well-tested programming tool. - -This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. - NUnit is a unit-testing framework for all .Net languages with a strong TDD focus. - Version 2.6 is the seventh major release of NUnit. - -Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. - -The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package. - test testing tdd framework fluent assert theory plugin addin - - \ No newline at end of file diff --git a/dep/NUnit.2.6.1/lib/nunit.framework.dll b/dep/NUnit.2.6.1/lib/nunit.framework.dll deleted file mode 100644 index 215767d2fb38837c02dffec220b3ce69b4859260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147456 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